pandas 如何在python中过滤 Dataframe 中的行?

djmepvbi  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(152)

这是数据框

big = pd.DataFrame({'group': ['A', 'A', 'A','A', 'B','B','C','D','D', 'D'], 'animal': ['ALL other', 'cat','rabbit', 'dog', 'rabbit','ALL other', 'ALL', 'ALL other', 'dog','cat']})
big
        group   animal
0   A   ALL other
1   A   cat
2   A   rabbit
3   A   dog
4   B   rabbit
5   B   ALL other
6   C   ALL
7   D   ALL other
8   D   dog
9   D   cat

规则是,如果该组中有兔子,则挑出该组,如果动物是“所有”,则挑出所有动物并将其视为兔子,如果该组中没有兔子,则挑出“所有其他”并将其视为兔子。
小数据框如下

group   animal
0   A   rabbit
1   B   rabbit
2   C   ALL
3   D   ALL other
k4ymrczo

k4ymrczo1#

首先过滤DataFrame以仅保留rabbit/ALL/ALL other,然后利用rabbit按字典顺序排在ALL之后这一事实来获得groupby.max

m = big['animal'].isin(['rabbit', 'ALL', 'ALL other'])

big[m].groupby('group', as_index=False).max()

作为一种通用方法,将“animal”设置为有序的Categorical,您将能够选择任何自定义顺序。
输出:

group     animal
0     A     rabbit
1     B     rabbit
2     C        ALL
3     D  ALL other

相关问题