gpt4 book ai didi

python - pandas GroupBy 中按列表列分组

转载 作者:行者123 更新时间:2023-12-01 08:18:35 24 4
gpt4 key购买 nike

我有以下df ,

pri_key          doc_no    c_code
[9001, 7620] 767 0090
[9001, 7620] 767 0090
[9002, 7530] 768 4100
[9002, 7530] 769 3000
[9003, 7730] 777 4000
[9003, 7730] 777 4000
[9003, 7730] 779 4912

我需要散列pri_key然后 groupby 散列 pri_key ,并排除行具有相同 doc_no 的组和c_code组合来自df ;

 df["doc_group"] = df['pri_key'].apply(lambda ls: hash(tuple(sorted(ls))))

grouped = df.groupby("doc_group")

m = grouped[['doc_no', 'c_code']].apply(lambda x: len(np.unique(x.values)) > 1)

df = df.loc[m]

但是没有成功,

pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match

我想知道如何解决这个问题。所以结果看起来像,

pri_key          doc_no    c_code
[9002, 7530] 768 4100
[9002, 7530] 769 3000
[9003, 7730] 777 4000
[9003, 7730] 777 4000
[9003, 7730] 779 4912

最佳答案

您可以对 pri_key 进行元组化和散列,然后使用它对 df 进行分组:

grouper = [hash(tuple(x)) for x in df['pri_key']]
df[df.groupby(grouper)[['doc_no', 'c_code']].transform('nunique').gt(1).all(1)]

pri_key doc_no c_code
2 [9002, 7530] 768 4100
3 [9002, 7530] 769 3000
4 [9003, 7730] 777 4000
5 [9003, 7730] 777 4000
6 [9003, 7730] 779 4912

关于python - pandas GroupBy 中按列表列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831498/

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