gpt4 book ai didi

python - 为每个索引应用 pandas groupby

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:49 25 4
gpt4 key购买 nike

我有一个以人名作为索引(可以有多个条目)和两列“X”和“Y”的数据框。 “X”和“Y”列可以是 A-C 之间的任何字母。

例如:

df = pd.DataFrame({'X' : ['A', 'B', 'A', 'C'], 'Y' : ['B', 'A', 'A', 'C']},index = ['Bob','Bob','John','Mike'])

对于每个人(即索引),我想获得“X”和“Y”列的每个唯一组合的出现次数(例如 - 对于 Bob,我有 1 个('A','B ') 和 1 个 ('B','A'))。

当我执行以下操作时:

df.loc['Bob'].groupby(['X','Y']).size() 

我得到了 Bob 的正确结果。我怎样才能在没有 oop 的情况下为每个人做到这一点?理想情况下,我会得到一个数据框,其中不同的人作为索引,列“X”和“Y”的每个唯一组合作为列,它在数据框中出现的次数作为值。

    ('A','A') ('A','B') ('A','C') ('B','A') ... ('C','C')
Bob 0 1 0 1 0
John 1 0 0 0 0
Mike 0 0 0 0 1

最佳答案

使用 get_dummiesgroupby

pd.get_dummies(df.apply(tuple, 1)).groupby(level=0).sum()

(A, A) (A, B) (B, A) (C, C)
Bob 0 1 1 0
John 1 0 0 0
Mike 0 0 0 1

关于python - 为每个索引应用 pandas groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41868047/

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