Python ==1在数据帧中仍返回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,例如,返回所有第一或第十首曲目(所有周)。

这是我的第一个问题,我对所有这些都是比较陌生的,如果这是愚蠢的话,请提前道歉,但我已经花了相当多的时间搜索和尝试dif解决方案

我有一个跟踪数据和他们每周排名的df。在轨道未分类的几周内,数据为“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结构(它们固有地在列中,所以它们不能“离开”行,再次感谢您!