在不扩展列名的情况下使用python数据帧的Groupby
我想使用pandas groupby funktion,但不影响列名。例如: 我的原始数据帧:在不扩展列名的情况下使用python数据帧的Groupby,python,pandas,aggregate-functions,pandas-groupby,Python,Pandas,Aggregate Functions,Pandas Groupby,我想使用pandas groupby funktion,但不影响列名。例如: 我的原始数据帧: df = DataFrame({'int_col' : [1,2,6,8,-1],\ 'float_col' : [0.1, 0.2,0.2,10.1,None], \ 'str_col' : ['a','b',None,'c','a']}) str_col int_col float_col max
df = DataFrame({'int_col' : [1,2,6,8,-1],\
'float_col' : [0.1, 0.2,0.2,10.1,None], \
'str_col' : ['a','b',None,'c','a']})
str_col int_col float_col
max sum
0 a 1 0.1
1 b 2 0.2
2 c 8 10.1
结果:
float_col int_col str_col
0 0.1 1 a
1 0.2 2 b
2 0.2 6 None
3 10.1 8 c
4 NaN -1 a
现在我应用groupby函数:
f = {'int_col':['max'],'float_col':['sum']}
df_groupby = df.groupby('str_col', as_index=False,group_keys=False).agg(f)
这将导致新的数据帧:
df = DataFrame({'int_col' : [1,2,6,8,-1],\
'float_col' : [0.1, 0.2,0.2,10.1,None], \
'str_col' : ['a','b',None,'c','a']})
str_col int_col float_col
max sum
0 a 1 0.1
1 b 2 0.2
2 c 8 10.1
在df_groupby数据框架中,列名获得了一个新的级别。我想压制这一点
THX删除字典中的
[]
:
f = {'int_col':'max','float_col':'sum'}
df_groupby = df.groupby('str_col', as_index=False,group_keys=False).agg(f)
print (df_groupby)
str_col float_col int_col
0 a 0.1 1
1 b 0.2 2
2 c 10.1 8
如果要重命名列:
f = {'int_col':'max','float_col':'sum'}
d = {'float_col':'sum','int_col':'max'}
df_groupby = df.groupby('str_col', as_index=False,group_keys=False).agg(f).rename(columns=d)
print (df_groupby)
str_col sum max
0 a 0.1 1
1 b 0.2 2
2 c 10.1 8
我曾经通过以下方式解决过类似的问题:
df_groupby.index = df_groupby.index.get_level_values(0)
df_groupby.columns = df_groupby.columns.map('||'.join)
这将展平df并合并列名,从而产生:
str_col|| int_col||max float_col||sum
0 a 1 0.1
1 b 2 0.2
2 c 8 10.1
只需执行df.groupby('str_col',as_index=False).agg({'int_col':'max','float_col':'sum')?