Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不扩展列名的情况下使用python数据帧的Groupby_Python_Pandas_Aggregate Functions_Pandas Groupby - Fatal编程技术网

在不扩展列名的情况下使用python数据帧的Groupby

在不扩展列名的情况下使用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

我想使用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       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')?