Python 如何使用GROUPBY like函数将值插入到新列中?

Python 如何使用GROUPBY like函数将值插入到新列中?,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我想知道是否有一种方法可以使用类似于df.groupby(['Col1','Col2']).agg({'Col2':'count'})函数的某种代码将值插入数据帧的新列中 我的Df看起来像这样: ID Customer Connection Product_ID Count 10 AMXX Instant AAB NaN 11 JKXX Slow AAB NaN 12 LKXX Slow HJA N

我想知道是否有一种方法可以使用类似于
df.groupby(['Col1','Col2']).agg({'Col2':'count'})
函数的某种代码将值插入数据帧的新列中

我的Df看起来像这样:

ID Customer Connection Product_ID Count
10 AMXX     Instant    AAB        NaN 
11 JKXX     Slow       AAB        NaN
12 LKXX     Slow       HJA        NaN
13 AMXX     Instant    AAB        NaN
14 RFXX     Slow       WRQ        NaN
15 RFXX     Instant    WRQ        NaN
ID Customer Connection Product_ID Count
10 AMXX     Instant    AAB        2
11 JKXX     Slow       AAB        1
12 LKXX     Slow       HJA        1
13 AMXX     Instant    AAB        2
14 RFXX     Slow       WRQ        2
15 RFXX     Instant    WRQ        2
df['Count']是我创建的新空列,我想在其中存储每个客户使用每行记录在'product_ID'列中的产品的次数。我希望使用相同的df,只填写“Count”列,而不是分组方式

我希望df看起来像这样:

ID Customer Connection Product_ID Count
10 AMXX     Instant    AAB        NaN 
11 JKXX     Slow       AAB        NaN
12 LKXX     Slow       HJA        NaN
13 AMXX     Instant    AAB        NaN
14 RFXX     Slow       WRQ        NaN
15 RFXX     Instant    WRQ        NaN
ID Customer Connection Product_ID Count
10 AMXX     Instant    AAB        2
11 JKXX     Slow       AAB        1
12 LKXX     Slow       HJA        1
13 AMXX     Instant    AAB        2
14 RFXX     Slow       WRQ        2
15 RFXX     Instant    WRQ        2
有谁知道我怎么可能做到这一点?
谢谢:)

只是借用了评论部分给出的相同想法:

您可以使用
df.groupby
并将值分配回名为like
new\u count
的新列,该列应足以获得所需的值

您可以将
count
size
transform
一起使用,这两种方法都应满足目的

>>> df.assign(new_count = df.groupby('Customer')['Product_ID'].transform('count')).drop('Count', axis=1)
   ID Customer Connection Product_ID  new_count
0  10     AMXX    Instant        AAB          2
1  11     JKXX       Slow        AAB          1
2  12     LKXX       Slow        HJA          1
3  13     AMXX    Instant        AAB          2
4  14     RFXX       Slow        WRQ          2
5  15     RFXX    Instant        WRQ          2
注意:在上面的示例中,
assign
将有助于为您创建一个新列,这使您可以自由地保留现有列并添加从
groupby
生成的新列,但是如果您想覆盖现有的
count
列,则可以使用下面的。。但最好添加新的调用,以防您想要保留所有现有的数据集

df = df.assign(Count = df.groupby('Customer')['Product_ID'].transform('count'))

尝试:


您能解释一下ID 13,其中
product\u ID
AWR
更改为
AAB
df.groupby('Customer')['product\u ID'].transform('size')
df.groupby('Customer')['product\u ID']转换('count')
可能重复的@pygo,很高兴知道:)是的,我可以使用前面的代码:)谢谢你的帮助!我懂了。没有注意到。无论如何,很高兴能帮上忙:))