几天前,我问了一个在这里得到很好回答的问题: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的子集来做到这一点?
预先感谢!
答案 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