为什么 df.where() 不替换所有空值?
Why does df.where() not replace all null values?
我有一个包含非常混合列的数据框。我正在尝试将所有出现的 None
或 NaN
设置为 None
.
我正在尝试回答这个问题:但是接受的答案并没有捕获所有空实例。示例:
my_array = ['1','2',None,4]
df = pd.DataFrame([my_array], columns=['Morning', 'Midday', 'Evening', 'Night'])
df = df.append({'Midday':'10'}, ignore_index=True)
这导致
Morning Midday Evening Night
0 1 2 None 4.0
1 NaN 10 NaN NaN
应用df.where()
查找并替换所有空值导致:
df.where(df.notnull(), None)
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None NaN
但是我想要输出
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None None
我哪里出错了,或者 df.where() 出错了?
您需要将数据类型更改为 object
out = df.astype(object).where(df.notna(), None)
Out[392]:
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None None
我有一个包含非常混合列的数据框。我正在尝试将所有出现的 None
或 NaN
设置为 None
.
我正在尝试回答这个问题:
my_array = ['1','2',None,4]
df = pd.DataFrame([my_array], columns=['Morning', 'Midday', 'Evening', 'Night'])
df = df.append({'Midday':'10'}, ignore_index=True)
这导致
Morning Midday Evening Night
0 1 2 None 4.0
1 NaN 10 NaN NaN
应用df.where()
查找并替换所有空值导致:
df.where(df.notnull(), None)
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None NaN
但是我想要输出
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None None
我哪里出错了,或者 df.where() 出错了?
您需要将数据类型更改为 object
out = df.astype(object).where(df.notna(), None)
Out[392]:
Morning Midday Evening Night
0 1 2 None 4.0
1 None 10 None None