我有一個從 .csv 檔案中獲得的巨大資料框。定義列后,我只想使用我需要的列。我使用了 Python 3.8.1 版本,效果很好,盡管引發了“FutureWarning:
將串列喜歡傳遞給 .loc 或帶有任何缺失標簽的 [] 將來會引發 KeyError,您可以使用 .reindex() 作為替代方案。”
如果我嘗試在 Python 3.10.x 中做同樣的事情,我現在會得到一個 KeyError:“['empty'] not in index”
為了獲得切片/擺脫我不需要的列,我使用 .loc 函式,如下所示:
df = df.loc[:, ['laenge','Timestamp', 'Nick']]
如何在不獲取 KeyError 的情況下使用 .reindex 函式(或任何其他函式)獲得相同的結果?
謝謝
uj5u.com熱心網友回復:
如果只需要 DataFrame 中存在的列,請使用numpy.intersect1d:
df = df[np.intersect1d(['laenge','Timestamp', 'Nick'], df.columns)]
DataFrame.reindex如果與僅洗掉缺失值列一起使用,則輸出相同:
df = df.reindex(['laenge','Timestamp', 'Nick'], axis=1).dropna(how='all', axis=1)
樣品:
df = pd.DataFrame({'laenge': [0,5], 'col': [1,7], 'Nick': [2,8]})
print (df)
laenge col Nick
0 0 1 2
1 5 7 8
df = df[np.intersect1d(['laenge','Timestamp', 'Nick'], df.columns)]
print (df)
Nick laenge
0 2 0
1 8 5
uj5u.com熱心網友回復:
使用reindex:
df = pd.DataFrame({'A': [0], 'B': [1], 'C': [2]})
# A B C
# 0 0 1 2
df.reindex(['A', 'C', 'D'], axis=1)
輸出:
A C D
0 0 2 NaN
如果您只需要獲取公共列,則可以使用Index.intersection:
cols = ['A', 'C', 'E']
df[df.columns.intersection(cols)]
輸出:
A C
0 0 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456671.html
上一篇:資料框按某列分組并重復該行n次
