gpt4 book ai didi

python - 使用 groupby 和合并在 Pandas 中创建新列

转载 作者:行者123 更新时间:2023-11-28 20:12:31 24 4
gpt4 key购买 nike

所以我有一个看起来像这样的 pandas 数据框。

    name  is_something
0 a 0
1 b 1
2 c 0
3 c 1
4 a 1
5 b 0
6 a 1
7 c 0
8 a 1

有没有一种方法可以使用 groupby 和 merge 来创建一个新列,该列给出名称在整个数据框中出现的 is_something 值为 1 的次数?更新后的数据框如下所示:

    name  is_something no_of_times_is_something_is_1
0 a 0 3
1 b 1 1
2 c 0 1
3 c 1 1
4 a 1 3
5 b 0 1
6 a 1 3
7 c 0 1
8 a 1 3

我知道您可以通过循环遍历数据框来执行此操作,但我正在寻找一种更有效的方法,因为我正在使用的数据集非常大。提前致谢!

最佳答案

如果 is_something 列中只有 01 值,则只使用 sumGroupBy.transform对于由聚合值填充的新列:

df['new'] = df.groupby('name')['is_something'].transform('sum')
print (df)
name is_something new
0 a 0 3
1 b 1 1
2 c 0 1
3 c 1 1
4 a 1 3
5 b 0 1
6 a 1 3
7 c 0 1
8 a 1 3

如果可能,多个值首先与 1 比较,转换为整数,然后使用 transformsum:

df['new'] = df['is_something'].eq(1).view('i1').groupby(df['name']).transform('sum')

关于python - 使用 groupby 和合并在 Pandas 中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58287504/

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