考虑这个例子

df = pd.DataFrame({'group' : ['a','a','a','b','b'],
                   'value' : [1,2,3,10,20]})

Out[39]:
  group  value
0     a      1
1     a      2
2     a      3
3     b     10
4     b     20

本质上,我希望按group分组,并能够调用使用当前组的值(在本例中为functiona的值)作为参数的b。也就是说,我的函数将电流value及其对应的group作为输入。
有点像
def myfunc(mygroup, myvalue):
    return myvalue.astype(str) + mygroup

df.groupby('group').value.apply(lambda x: myfunc(mygroup,x))

这不起作用。
预期产量为:
Out[38]:
0     1a
1     2a
2     3a
3    10b
4    20b

有什么想法吗?
谢谢!

最佳答案

您可以尝试将数据帧分组并在groupby函数中添加特定列

df.groupby(['group']).apply(lambda x: x['value'].astype(str) + x['group'])

输出:
group
a      0     1a
       1     2a
       2     3a
b      3    10b
       4    20b
dtype: object


您还可以尝试逐个循环组并将组添加到值中
pd.concat([g['value'].astype(str)+i for i,g in df.groupby(['group'])])

输出:
0     1a
1     2a
2     3a
3    10b
4    20b
Name: value, dtype: object

关于python - 如何在groupby中将当前组作为参数传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52574363/

10-15 08:54