pandas 如何计算groupby ID后的唯一值

omtl5h9j  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(198)

我有以下Pandas Dataframe df

ID  from   to
A    0x    0c
A    0x    0f
A    0f    0n
B    0f    0c
B    0c    0f
C    0k    0j
C    0j    0k
C    0k    0a

首先,我想按id分组,并且仅当fromto的唯一值的数量之和小于3时才保留分组。
因此期望的DF将是

B    0f    0c
B    0c    0f
C    0k    0j
C    0j    0k
C    0k    0a
aiazj4mn

aiazj4mn1#

如何使用groupby filter和lambda函数来确认fromto列中唯一值的数量小于或等于3?您可以使用DataFrame.stack()作为一个hacky解决方案,将 Dataframe 中的所有值放入单个Series中,以便将Series.nunique()用于:

import pandas as pd

# Your dataframe here
df = pd.read_clipboard()

out = df.groupby("ID").filter(lambda x: x[["from", "to"]].stack().nunique() <= 3)

输出:

ID from  to
3  B   0f  0c
4  B   0c  0f
5  C   0k  0j
6  C   0j  0k
7  C   0k  0a

相关问题