我想在我的代碼中洗掉一些與 if 條件匹配的行,但它不能,它會彈出如下錯誤,你能幫忙嗎?
def listconvert(df_test):
df1 = []
for i in df_test:
if str(i) != 'nan':
df1.append(i)
return df1
for j in range(len(df)-1):
# print(len(listconvert(df.iloc[j].values)) )
if len(listconvert(df.iloc[j].values)) < len(df.columns):
# df.drop(df.loc[df.index==j].index,inplace=True)
print(len(listconvert(df.iloc[j].values)))
df = df.drop(df.index[j])
else:
pass
# df1.to_excel("Mar-131.xlsx")
錯誤如下:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_16140/2461102218.py in <module>
45 for j in range(len(df)-1):
46 # print(len(listconvert(df.iloc[j].values)) )
---> 47 if len(listconvert(df.iloc[j].values)) < len(df.columns):
48 # df.drop(df.loc[df.index==j].index,inplace=True)
49 print(len(listconvert(df.iloc[j].values)))
IndexError: single positional indexer is out-of-bounds
uj5u.com熱心網友回復:
你應該重新考慮你的代碼。從根本上說,它所做的只是洗掉包含一個或多個 NAN 的行。你可以像這樣快 1000 倍:
df.dropna(inplace=True)
或者,只是為了獲得靈感來展示如果沒有預先構建的功能,您如何自己做:
df = df[df.notna().all(axis=1)]
就是這樣,它替換了您擁有的所有代碼,沒有慢for回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443065.html
上一篇:如何創建具有聚合類別的資料框?
