这是我的第一个问题,而且我对这一切相对较新,如果它很愚蠢,请提前对不起,但我花了不少时间搜索并尝试了解决方案。
我有一系列的跟踪数据及其每周排名。在曲目没有排名的几周内,数据是“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,无济于事。我想我可能会以错误的方式看待它,因为我对这一切都很陌生......
答案 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