gpt4 book ai didi

python-2.7 - 在 groupby 数据框中应用唯一两次

转载 作者:行者123 更新时间:2023-12-02 03:21:23 24 4
gpt4 key购买 nike

我有一个如下所示的数据框 df:

key_1, key_2, country
12, a, US
12, a, US
12, b, US
12, c, NZ
23, d, PE
23, e, PE
23, e, PE
31, f, RO
31, f, RO
42, g, VI

我对满足以下条件的 2 个数据帧感兴趣(请为每个数据帧提供一个过程):

1st- 给定一个 key_1,有不止一个唯一的 key_2 AND 一个唯一的国家。例如。

23, d, PE
23, e, PE

2nd- 给定一个 key_1,有不止一个唯一的 key_2 AND 不止一个唯一的国家。例如。

12, a, US
12, b, US
12, c, NZ

在这两种情况下,生成的数据框都应具有唯一的行。

一段时间以来一直在阅读其他问题,但我最接近的是:

result = df.groupby("key_1")["key_2"].apply(pd.value_counts).count(level=0)

这有助于我找到哪些行具有多个唯一的“key_2 per key_1”(我的大部分数据框由每个 key_1 行的唯一 key_2 和国家/地区组成,不管是否重复)但我离我需要的还很远。

非常感谢您! (对不起问题标题,但我不确定该怎么调用它)

最佳答案

经过几个小时的挖掘,我终于设法自己完成了。大家有更好的方案欢迎回答!

我已经在我的真实数据框上尝试了以下代码并且它有效。

正如@Alexander 正确指出的那样,“您想要的两个数据帧都建立在同一组数据上:对于给定的 key_1,具有多个 key_2 的行”

因此,在给定 key_1 的情况下,我首先对具有多个唯一 key_2 的行进行子集化。然后我将其分为 2 个:一个用于给定 key_1 的唯一国家,另一个用于给定 key_1 的 2 个以上国家。

# more than one unique key_2 per key_1
subset_k2= df.groupby(['key_1'])['key_2'].nunique().reset_index()
subset_k2= subset_gb[subset_gb[key_2] > 1]
subset_all= df[df["key_1"].isin(subset_k2["key_1"].tolist())]

# more than one unique country per key_1
subset_ct= df.groupby(['key_1'])['country'].nunique().reset_index()
subset_ct= subset_ct[subset_ct['country'] > 1]

# Results that fulfill condition 2 from my question:
result_2 = subset_all[subset_all["key_1"].isin(subset_ct["key_1"].tolist())].drop_duplicates()

# Results that fulfill condition 1 from my question:
result_1 = subset_all[~subset_all["key_1"].isin(subset_ct["key_1"].tolist())].drop_duplicates()

关于python-2.7 - 在 groupby 数据框中应用唯一两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33114637/

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