Consider this example
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
Essentially I would like to group by group and be able to call a function that uses the value of the current group (a or b in this example) as an argument. That is, my function takes as input the current value and its corresponding group.
Something like
def myfunc(mygroup, myvalue):
    return myvalue.astype(str) + mygroup
df.groupby('group').value.apply(lambda x: myfunc(mygroup,x))
Which does not work. Expected output is:
Out[38]: 
0     1a
1     2a
2     3a
3    10b
4    20b
Any ideas? Thanks!
You can try grouping the dataframe and adding the specific columns in groupby function
df.groupby(['group']).apply(lambda x: x['value'].astype(str) + x['group'])
Out:
group   
a      0     1a
       1     2a
       2     3a
b      3    10b
       4    20b
dtype: object
or
you can also try of looping the groups individually and adding the group to value
pd.concat([g['value'].astype(str)+i for i,g in df.groupby(['group'])])
Out:
0     1a
1     2a
2     3a
3    10b
4    20b
Name: value, dtype: object
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With