【发布时间】:2018-01-30 17:14:50
【问题描述】:
当我有这样的数据框时:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.nan, index=list('abc'), columns=list('DEF'), dtype=float)
df.set_value('a', 'D', 4.0)
df.set_value('b', 'E', 10.0)
D E F
a 4.0 NaN NaN
b NaN 10.0 NaN
c NaN NaN NaN
我可以通过调用轻松删除仅包含 NaNs 的行:
df = df.dropna(how='all')
产生
D E F
a 4.0 NaN NaN
b NaN 10.0 NaN
如何在使用dtype=str 初始化的数据帧上做同样的事情?以下方法不起作用:
df2 = pd.DataFrame(np.nan, index=list('abc'), columns=list('DEF'), dtype='str')
df2.set_value('a', 'D', 'foo')
df2.set_value('b', 'E', 'bar')
D E F
a foo n n
b n bar n
c n n n
然后是命令
df2 = df2.dropna(how='all')
返回未修改的数据帧。
【问题讨论】:
-
它们不再是
NaN,而是字符'n',所以你可以过滤掉它们,但这里真正的问题是什么,NaN是一个数字,str不能代表它,所以他们在技术上不是NaN
标签: python pandas dataframe nan missing-data