欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python-pandas返回重復(fù)數(shù)據(jù)的index問題

 更新時(shí)間:2024年02月20日 15:05:06   作者:Vergil_Zsh  
這篇文章主要介紹了Python-pandas返回重復(fù)數(shù)據(jù)的index問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在處理數(shù)據(jù)的時(shí)候,會(huì)出先相同的列或者行,我們需要有時(shí)候需要對其中一列或者其中一行進(jìn)行操作

因?yàn)閿?shù)據(jù)清洗的過程會(huì)碰到多種情況

下面是我碰到的一種情況

既有合并的又有空列

使用pandas進(jìn)行讀取后

現(xiàn)在需要以第一行作為列名,然后去掉NaN的列

讀取數(shù)據(jù)的時(shí)候,在pd.read_excel()中可以添加參數(shù)header=None這個(gè)參數(shù) 默認(rèn)沒有頭列

代碼如下

import pandas as pd
data = pd.read_excel('test.xlsx',header=None)

接下來處理為NaN的列

因?yàn)閜andas讀取NaN只能判斷出狀態(tài),并不能作為選擇,這里需要轉(zhuǎn)變一個(gè)想法,我常用的是轉(zhuǎn)換為True or False,剛好pandas里面有自帶的函數(shù),代碼如下:

使用notna()函數(shù)

# 因?yàn)槎歼M(jìn)來的數(shù)據(jù),我們需要的列名還是在第一行,固我們?nèi)〉谝恍械乃?
judge_nan_col = data.iloc[1,:].notna().tolist()
print(judge_nan_col)

tolist()是方便我們?nèi)ndex 

接下來是關(guān)鍵的部分了,因?yàn)橛卸鄠€(gè)False,所以如果按照我們之前的list.index()這種是不可取的 

這里我以為大家演示下

返回的同一個(gè)索引,默認(rèn)是第一次出現(xiàn)的,所以這個(gè)方法是不可取的

這里有多個(gè)方法

1.使用list.index()方法

需要使用count()函數(shù)進(jìn)行計(jì)數(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.通過索引遍歷原列表,對每個(gè)元素進(jìn)行判斷

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)

目前我能想到的就這三種了

獲取到我們想要的列了,并且存到了列表中,這下就是進(jìn)行刪除了 

pandas自帶函數(shù)drop()就可以盡心行或列的刪除

# 可以根據(jù)需要看刪除哪一列,我這里是全部進(jìn)行刪除
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)

處理行,同上 不過刪除的時(shí)候

需要將data = data.drop(axis=0) 

axis=1 轉(zhuǎn)換為 axis=0

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論