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
并将值分配回名为likenew\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,很高兴知道:)是的,我可以使用前面的代码:)谢谢你的帮助!我懂了。没有注意到。无论如何,很高兴能帮上忙:))