所以我有一个看起来像这样的熊猫数据框。
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并合并以创建新列的方法,该列给出了在整个数据框中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
我知道您可以遍历数据框来执行此操作,但是我正在寻找一种更有效的方法,因为正在使用的数据集非常大。预先感谢!
[如果0
列中只有1
和is_something
值,则仅将sum
和GroupBy.transform
用于由聚合值填充的新列:
GroupBy.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
与transform
结合使用:
sum