根据系列中数据失败而在DataFrame范围内过滤DataFrame上的行

时间:2019-03-27 15:34:54

标签: python-3.x pandas dataframe

几天前,我问了一个在这里得到很好回答的问题:Filtering rows on DataFrame based on data in a Series

这对于原始的DataFrame很好:

yourdf=df[df.set_index(['YEAR','CATEGORY']).GRADE.gt(s).values]
yourdf

   YEAR CATEGORY  GRADE
1  1999        A    7.2
3  1999        B    6.4
7  2000        B    8.4

但是,如果仅得到如下所示的行,则会出现此错误:

df = df[2:]
yourdf=df[df.set_index(['YEAR','CATEGORY']).GRADE.gt(s).values]

ValueError: Item wrong length 7 instead of 6.

如何使用DataFrame的子集来做到这一点?

预先感谢!

1 个答案:

答案 0 :(得分:1)

使用reindex

的快速修复
df=df.set_index(['YEAR','CATEGORY'])
yourdf=df[df.GRADE.gt(s.reindex(df.index)).values]
yourdf
Out[250]: 
               GRADE
YEAR CATEGORY       
2000 B           8.4