如何将数值与纳米值分开?

时间:2018-04-01 05:34:46

标签: python pandas

我的pandas数据框中有大量缺失的数据。如果我选​​择

d = dfs['REV_PIZ'].isna()

输出是布尔值。

0        True
1        True
2        True
3        True
4        True
5        True
6        True
7        True

我真正想要的是只使用数值,这将使我能够在这一列上进一步数学。

3 个答案:

答案 0 :(得分:3)

目前还不清楚是否存在非数值,因此有两种可能的解决方案:

如果所有值均为数字,则可以boolean indexing使用isna

d = dfs[dfs['REV_PIZ'].notna()]

REV_PIZdropna

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)

这应该有效 -

d=dfs.query("REV_PIZ==REV_PIZ")

见这里 - Querying for NaN and other names in Pandas