Python ==1在数据帧中仍返回NaN值
这是我的第一个问题,我对所有这些都是比较陌生的,如果这是愚蠢的话,请提前道歉,但我已经花了相当多的时间搜索和尝试dif解决方案 我有一个跟踪数据和他们每周排名的df。在轨道未分类的几周内,数据为“NaN”Python ==1在数据帧中仍返回NaN值,python,pandas,dataframe,nan,Python,Pandas,Dataframe,Nan,这是我的第一个问题,我对所有这些都是比较陌生的,如果这是愚蠢的话,请提前道歉,但我已经花了相当多的时间搜索和尝试dif解决方案 我有一个跟踪数据和他们每周排名的df。在轨道未分类的几周内,数据为“NaN” pv = df.pivot_table(df, index=['track']) pv2 = pv.fillna(100) pv2[pv2 == 1] 我的问题是,为什么在NaN填充到“100”后,它仍然在pv2中返回NaN?我不知道如何摆脱NaN,例如,返回所有第一或第十首曲目(所有周)。
pv = df.pivot_table(df, index=['track'])
pv2 = pv.fillna(100)
pv2[pv2 == 1]
我的问题是,为什么在NaN填充到“100”后,它仍然在pv2中返回NaN?我不知道如何摆脱NaN,例如,返回所有第一或第十首曲目(所有周)。根据数据的性质,某些列将有1和NaN,其他列将有NaN但没有1。大多数列是NaN的组合,范围在1<100之间
我曾尝试创建另一个pv表(使用dif索引,使其仅在周中显示列,仅在int64中显示数据类型),更改数据类型,但没有效果。我想我可能看错了,因为我对这一切都很陌生 如果将掩码应用于数据帧,则会得到
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
如果将掩码应用于数据帧,则会得到
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
您可以添加数据样本、5-6行和所需的输出吗?欢迎使用StackOverflow。你可以查一下谢谢!试图找到提供数据样本的最佳方法,它来自一个大的cvs文件,其中包含float64 int64字符串,所有内容都是真实的(这是几年前billboard top 100的一个cvs)我认为这是我问题的根源,我希望在默认情况下返回的某些行(曲目)中包含NaN,但还有一些不是#1#的东西仍在被归还(包括NaN的)。我构建它的方式可能是个问题;我需要找到一些数据发布,没问题。我试着用我的样本编辑我的答案。然后你可以使用它作为模板。谢谢你的帮助!是的,我意识到问题是我不能得到我心目中的回报,因为df的结构(我需要制作一个新的pv表来改变这一点)你能添加你的数据样本,5-6行和期望的输出吗?欢迎来到StackOverflow。你可以查一下谢谢!试图找到提供数据样本的最佳方法,它来自一个大的cvs文件,其中包含float64 int64字符串,所有内容都是真实的(这是几年前billboard top 100的一个cvs)我认为这是我问题的根源,我希望在默认情况下返回的某些行(曲目)中包含NaN,但还有一些不是#1#的东西仍在被归还(包括NaN的)。我构建它的方式可能是个问题;我需要找到一些数据发布,没问题。我试着用我的样本编辑我的答案。然后你可以使用它作为模板。谢谢你的帮助!是的,我意识到问题是,由于df的结构,我无法获得我心目中的回报(我需要制作一个新的pv表来改变这一点)我添加了我的数据样本,请检查并更改它。:)让我问你:在你的最后一块中,有没有一种简单的方法来翻转表格(0、1、2、3为列,a、b等为行)?这是转置吗?或我必须手动创建一个新的透视图,只需索引所有列并将它们作为行来放置吗?转换UI非常容易使用
print df.T
哈哈,哇,伙计,你太棒了!我觉得自己像个白痴,但这让我明白了我的问题,非常感谢!问题是,由于pv的结构方式,我无法“摆脱”部分/全部NaN(它们固有地位于列中,因此它们无法“离开”行,再次感谢您!我添加了数据样本,请检查并更改它。:)让我问您:在您的最后一个模块中,是否有一种简单的方法可以翻转表格(0、1、2、3为列,a、b等为行)?这是转置吗?或者;我必须手动创建一个新的轴,只需索引所有列并将它们作为行来代替吗?转置UI非常简单-使用print df.T
哈哈,哇,你太棒了!我觉得自己像个白痴,但这让我明白了我遇到的问题,非常感谢!问题是我不能“摆脱”部分/全部NaN,因为我的pv结构(它们固有地在列中,所以它们不能“离开”行,再次感谢您!