Python-pandas返回重復(fù)數(shù)據(jù)的index問題
在處理數(shù)據(jù)的時候,會出先相同的列或者行,我們需要有時候需要對其中一列或者其中一行進行操作
因為數(shù)據(jù)清洗的過程會碰到多種情況
下面是我碰到的一種情況
既有合并的又有空列
使用pandas進行讀取后
現(xiàn)在需要以第一行作為列名,然后去掉NaN的列
讀取數(shù)據(jù)的時候,在pd.read_excel()中可以添加參數(shù)header=None這個參數(shù) 默認沒有頭列
代碼如下
import pandas as pd data = pd.read_excel('test.xlsx',header=None)
接下來處理為NaN的列
因為pandas讀取NaN只能判斷出狀態(tài),并不能作為選擇,這里需要轉(zhuǎn)變一個想法,我常用的是轉(zhuǎn)換為True or False,剛好pandas里面有自帶的函數(shù),代碼如下:
使用notna()函數(shù)
# 因為都進來的數(shù)據(jù),我們需要的列名還是在第一行,固我們?nèi)〉谝恍械乃? judge_nan_col = data.iloc[1,:].notna().tolist() print(judge_nan_col)
tolist()是方便我們?nèi)ndex
接下來是關(guān)鍵的部分了,因為有多個False,所以如果按照我們之前的list.index()這種是不可取的
這里我以為大家演示下
返回的同一個索引,默認是第一次出現(xiàn)的,所以這個方法是不可取的
這里有多個方法
1.使用list.index()方法
需要使用count()函數(shù)進行計數(shù)
count = judge_nan_col.count(False) index_list = [] index = -1 # 通過list.index()方法的__start參數(shù),指定起始索引 for i in range(0, count): index = judge_nan_col.index(False, index + 1) index_list.append(index) print(index_list)
2.通過索引遍歷原列表,對每個元素進行判斷
list_len = len(judge_nan_col) index_list = [] for i in range(0, list_len): if judge_nan_col[i] == False: index_list.append(i) print(index_list)
3.使用enumerate()函數(shù)
index_list = [i for i, col in enumerate(judge_nan_col) if col == False] print(index_list)
目前我能想到的就這三種了
獲取到我們想要的列了,并且存到了列表中,這下就是進行刪除了
pandas自帶函數(shù)drop()就可以盡心行或列的刪除
# 可以根據(jù)需要看刪除哪一列,我這里是全部進行刪除 data = data.drop(index_list,axis=1) print(data)
現(xiàn)在離目標(biāo)很近了,就差第一行了,還是一樣,使用data.iloc()函數(shù),重新構(gòu)建dataframe
# 獲取列名 columns = data.iloc[1,:].tolist() print('columns: ',columns,'\n') print('=================================') data = data.iloc[1:,:] data.columns=columns print(data)
輸出到excel
data.to_excel('complete.xlsx',index=False)
處理行,同上 不過刪除的時候
需要將data = data.drop(axis=0)
axis=1 轉(zhuǎn)換為 axis=0
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中raise用法簡單實例(超級詳細,看了無師自通)
python中raise語句用于手動觸發(fā)異常,通過raise語句可以在代碼中顯式地引發(fā)異常,從而使程序進入異常處理流程,下面這篇文章主要給大家介紹了關(guān)于Python中raise用法的相關(guān)資料,需要的朋友可以參考下2024-03-03python3使用urllib示例取googletranslate(谷歌翻譯)
這篇文章主要介紹了使用urllib取googletranslate(谷歌翻譯)的示例,通過這個谷歌翻譯示例學(xué)習(xí)python3中urllib的使用方法,2014-01-01Pycharm使用遠程linux服務(wù)器conda/python環(huán)境在本地運行的方法(圖解))
這篇文章主要介紹了Pycharm使用遠程linux服務(wù)器conda/python環(huán)境在本地運行的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12通過shell+python實現(xiàn)企業(yè)微信預(yù)警
這篇文章主要介紹了通過shell+python實現(xiàn)企業(yè)微信預(yù)警,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03python實現(xiàn)動態(tài)創(chuàng)建類的方法分析
這篇文章主要介紹了python實現(xiàn)動態(tài)創(chuàng)建類的方法,結(jié)合實例形式分析了Python動態(tài)創(chuàng)建類的原理、實現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下2019-06-06Python的凈值數(shù)據(jù)接口調(diào)用示例分享
這篇文章主要介紹了Python的凈值數(shù)據(jù)接口調(diào)用示例分享的相關(guān)資料,需要的朋友可以參考下2016-03-03