Python 使用条件语句返回数据帧的子集
我是python新手,所以如果这是新手犯的错误,我会提前道歉。我正在使用python 3.4。问题是: 我有一个带有datetimeindex和多个命名列的pandas数据框,如下所示:Python 使用条件语句返回数据帧的子集,python,pandas,indexing,conditional-statements,Python,Pandas,Indexing,Conditional Statements,我是python新手,所以如果这是新手犯的错误,我会提前道歉。我正在使用python 3.4。问题是: 我有一个带有datetimeindex和多个命名列的pandas数据框,如下所示: >>>df 'a' 'b' 'c' 1949-01-08 42.915 0 1.448
>>>df
'a' 'b' 'c'
1949-01-08 42.915 0 1.448
1949-01-09 19.395 0 0.062
1949-01-10 1.077 0.05 0.000
1949-01-11 0.000 0.038 0.000
1949-01-12 0.012 0.194 0.000
1949-01-13 0.000 0 0.125
1949-01-14 0.000 0.157 0.007
1949-01-15 0.000 0.003 0.000
我尝试使用datetimeindex中的年份和值上的条件语句提取子集:
>>>df['1949':'1980'][df > 0]
'a' 'b' 'c'
1949-01-08 42.915 NaN 1.448
1949-01-09 19.395 NaN 0.062
1949-01-10 1.077 0.05 NaN
1949-01-11 NaN 0.038 NaN
1949-01-12 0.012 0.194 NaN
1949-01-13 NaN NaN 0.125
1949-01-14 NaN 0.157 0.007
1949-01-15 NaN 0.003 NaN
我的最终目标是找到这个子集的百分位数,但是np.percentile不能处理NAN。我已经尝试过使用dataframe分位数方法,但是有几个丢失的数据点导致它删除整个列。使用条件语句选择值而不返回NaN似乎很简单,但我似乎找不到任何不返回NaN而返回较小子集的语句。任何帮助或建议都将不胜感激。谢谢 我不知道你到底期望得到什么结果 您可以使用
df>=0
将0
保留在列中
df['1949':'1980'][df >= 0]
您可以使用.fillna(0)
将NaN
更改为0
df['1949':'1980'][df > 0].fillna(0)
您可以使用.dropna()
删除带有任何NaN
的行,但这样可能会得到空结果
df['1949':'1980'][df > 0].dropna()