== 1仍然返回NaN值pandas dataframe

时间:2016-04-21 06:56:53

标签: python pandas dataframe nan

这是我的第一个问题,而且我对这一切相对较新,如果它很愚蠢,请提前对不起,但我花了不少时间搜索并尝试了解决方案。

我有一系列的跟踪数据及其每周排名。在曲目没有排名的几周内,数据是“NaN'”。

pv = df.pivot_table(df, index=['track'])
pv2 = pv.fillna(100)
pv2[pv2 == 1]

我的问题是,为什么在NaN被填充到&#39; 100后,它仍然在pv2中返回NaN?我还没有能够摆脱NaN,例如,返回第1或第10个(所有周)的所有曲目。根据数据的性质,一些列将具有1和NaN,其他列将具有NaN但不具有1&n。大多数列是NaN的组合,范围在1 <1之间。 100.

我试图创建另一个pv表(使用dif索引,因此只有几周是列,只有int64作为dtype),更改dtypes,无济于事。我想我可能会以错误的方式看待它,因为我对这一切都很陌生......

1 个答案:

答案 0 :(得分:0)

如果您将掩码应用于数据框,则NaN的值为False

样品:

import pandas as pd
import io

temp=u"""a,b,c,d,e,f,g,h
a,1,227,2.33,15.7,158,149,158
b,2,1,231,1.3,15.9,145,1
c,0,228,23.3,1.57,1,145,153
d,7,227,2.31,15.6,159,149,1"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp))
print df
   a  b    c       d      e      f    g    h
0  a  1  227    2.33  15.70  158.0  149  158
1  b  2    1  231.00   1.30   15.9  145    1
2  c  0  228   23.30   1.57    1.0  145  153
3  d  7  227    2.31  15.60  159.0  149    1

print df == 1
       a      b      c      d      e      f      g      h
0  False   True  False  False  False  False  False  False
1  False  False   True  False  False  False  False   True
2  False  False  False  False  False   True  False  False
3  False  False  False  False  False  False  False   True

print df[df == 1]
     a    b    c   d   e    f   g    h
0  NaN  1.0  NaN NaN NaN  NaN NaN  NaN
1  NaN  NaN  1.0 NaN NaN  NaN NaN  1.0
2  NaN  NaN  NaN NaN NaN  1.0 NaN  NaN
3  NaN  NaN  NaN NaN NaN  NaN NaN  1.0