我的pandas数据框中有大量缺失的数据。如果我选择
d = dfs['REV_PIZ'].isna()
输出是布尔值。
0 True
1 True
2 True
3 True
4 True
5 True
6 True
7 True
我真正想要的是只使用数值,这将使我能够在这一列上进一步数学。
答案 0 :(得分:3)
目前还不清楚是否存在非数值,因此有两种可能的解决方案:
如果所有值均为数字,则可以boolean indexing
使用isna
:
d = dfs[dfs['REV_PIZ'].notna()]
列REV_PIZ
或dropna
:
d = dfs.dropna(subset=['REV_PIZ'])
<强>示例强>:
dfs = pd.DataFrame({'REV_PIZ':[1,2,np.nan]})
d = dfs.dropna(subset=['REV_PIZ'])
print (d)
REV_PIZ
0 1.0
1 2.0
如果使用非数字混合数字,请添加to_numeric
errors='coerce'
以将非数字转换为NaN
s:
dfs = pd.DataFrame({'REV_PIZ':[1,2,np.nan,'a']})
dfs['REV_PIZ'] = pd.to_numeric(dfs['REV_PIZ'], errors='coerce')
d = dfs.dropna(subset=['REV_PIZ'])
print (d)
REV_PIZ
0 1.0
1 2.0
答案 1 :(得分:1)
我认为你的问题几乎可以回答,你可以像
一样过滤掉它们 d = dfs[~dfs['REV_PIZ'].isna()]
答案 2 :(得分:0)