Pandas: Groupby.transform -> 为列分配特定值



一般来说,是否有一种方法可以通过groupby.transform()将特定的值分配给列,其中groupby的大小是预先知道的?

例如:

df = pd.DataFrame(data = {'A':[10,10,20,20],'B':['abc','def','ghi','jkl'],'GroupID':[1,1,2,2]})
funcDict = {'A':'sum','B':['specific_val_1', 'specific_val_2']}
df = df.groupby('GroupID').transform(funcDict)

,结果将是:

specific_val_1specific_val_2specific_val_1specific_val_2

transform不能接受dict,所以我们可以用merge来做agg

out = df.groupby('GroupID',as_index=False)[['A']].sum()
out = out.merge(pd.DataFrame({'B':['specific_val_1', 'specific_val_2']}),how='cross')
Out[90]: 
GroupID   A               B
0        1  20  specific_val_1
1        1  20  specific_val_2
2        2  40  specific_val_1
3        2  40  specific_val_2

相关内容

最新更新