gpt4 book ai didi

python - 如何从 pandas 的 groupby 函数中排除一个值

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:53 26 4
gpt4 key购买 nike

我有一个数据框:

AID  Type        Co-AID   Co-Type
1 A 10 A
1 A 11 B
1 A 12 B
1 A 13 C
1 A 14 D
2 X 15 A
2 X 16 A
2 X 17 X
2 X 18 B
2 X 19 X
2 X 20 X

我想找出与它不同的每种类型的共同类型的百分比。

那么结果就是

  AID  Type   PercentDiff
1 A 0.8
2 X 0.5

0.8 是因为 4/5 的 Co-Type 不是 Type A

0.5 是因为 3/6 的 Co-Type 不是 Type X

我知道我可以根据TypeCo-Type 对它们进行分组并获取每个的计数,但是如何排除与其相似的类型?

最佳答案

你可以使用这个:

df.assign(PercentDiff=df['Type'].ne(df['Co-Type']))\
.groupby(['AID','Type'])['PercentDiff'].mean().reset_index()

输出:

   AID Type  PercentDiff
0 1 A 0.8
1 2 X 0.5

时间

@Psidom 方法

%%timeit
((df['Co-Type'] != df.Type)
.groupby([df.AID, df.Type])
.apply(lambda g: g.sum()/g.size)
.reset_index(name="PercentDiff"))

100 loops, best of 3: 7.13 ms per loop

这个方法没有lambda

%%timeit
(df.assign(PercentDiff=df['Type'].ne(df['Co-Type']))
.groupby(['AID','Type'])['PercentDiff'].mean().reset_index())

100 loops, best of 3: 4.42 ms per loop

关于python - 如何从 pandas 的 groupby 函数中排除一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45061922/

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