這是一個示例 CSV 檔案:
X,Y
A,
B,
C,D
讀取此檔案后,pandas 將空單元格視為NaN值:
df = pd.read_csv("test.csv")
X Y
0 A NaN
1 B NaN
2 C D
并將其轉換為python字典串列后,NaN變為nan
>> d = df.to_dict(orient='records')
[{'X': 'A', 'Y': nan}, {'X': 'B', 'Y': nan}, {'X': 'C', 'Y': 'D'}]
我正在嘗試使用 查找 null 退出的位置math.isnan(),但它會引發例外
for i,v in enumerate(d):
if math.isnan(v['Y']):
print(I)
0
1
TypeError: must be real number, not str
可以使用處理例外
for i,v in enumerate(d):
try:
if math.isnan(v['Y']):
print(i)
except:
pass
但是有沒有更好的方法來找到nan值?
uj5u.com熱心網友回復:
IIUC 用途pandas.isna:
for i,v in enumerate(d):
if pd.isna(v['Y']):
print('I')
uj5u.com熱心網友回復:
您不需要任何功能,您可以將值與自身進行比較。NaN 有一個有趣的屬性,與它們自己不同:
for i,v in enumerate(d):
if v['Y']!=v['Y']:
print(i)
輸出
0
1
另一種可能性是從 DataFrame 本身生成此串列(請注意,您將在此處獲得真正的索引,如果這是范圍索引,則為 0, 1,否則為索引的第一個和第二個值):
s = df['Y'].isna()
na_indices = s[s].index.to_list()
輸出:[0, 1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480591.html
