gpt4 book ai didi

python - 使用 Pandas 过滤列中具有唯一值的行

转载 作者:行者123 更新时间:2023-12-05 04:39:35 25 4
gpt4 key购买 nike

我有一个 df :

id      value
1 10
2 15
1 10
1 10
2 13
3 10
3 20

我试图只保留在列 value 中具有 1 个唯一值的行这样结果df看起来像这样:

id      value
1 10
1 10
1 10

我放弃了 id = 2, 3因为它在 value 列中有超过 1 个唯一值, 15, 13 & 10, 20分别。

I read this answer.但这只是删除重复项,而我想检查给定的列 - 在本例中为列 value具有超过 1 个唯一值。

我试过:

df['uniques'] = pd.Series(df.groupby('id')['value'].nunique())

但这会返回 nan对于每一行,因为我试图适应 n返回 n+m分组后的行。我可以编写一个函数并将其应用于每一行,但我想知道是否有一个智能快速过滤器可以实现我的目标。

最佳答案

使用 transform 和 groupby 将组值与各个行对齐:

df['nuniques'] = df.groupby('id')['value'].transform('nunique')

输出:

   id  value  nuniques
0 1 10 1
1 2 15 2
2 1 10 1
3 1 10 1
4 2 13 2
5 3 10 2
6 3 20 2

如果您只需要过滤数据,则不需要分配新列:

df[df.groupby('id')['value'].transform('nunique') == 1]

关于python - 使用 Pandas 过滤列中具有唯一值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70423948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com