考虑这个例子
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
分组,并能够调用使用当前组的值(在本例中为function
或a
的值)作为参数的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/