Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 熊猫的命名转换_Python_Pandas - Fatal编程技术网

Python 熊猫的命名转换

Python 熊猫的命名转换,python,pandas,Python,Pandas,我知道我可以在Pandas中命名一个聚合,如下所示: import pandas as pd import numpy as np df = pd.DataFrame({'col': [1,2,3], 'group' : ['a','a','b']}) df.groupby('group').agg(mymean = ('col', 'mean'), mymax = ('col', 'max'), mymin = (

我知道我可以在Pandas中命名一个
聚合
,如下所示:

import pandas as pd
import numpy as np

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

    
df.groupby('group').agg(mymean = ('col', 'mean'),
       mymax = ('col', 'max'),
       mymin = ('col', 'min'))

Out[23]: 
       mymean  mymax  mymin
group                      
a         1.5      2      1
b         3.0      3      3
这非常方便,因为我可以创建多个变量并动态命名它们。我想对
.transform()
(或
.apply()
)执行同样的操作。 不幸的是,同样的伎俩不起作用:

df.groupby('group').transform(mymean = ('col', 'mean'),
       mymax = ('col', 'max'),
       mymin = ('col', 'min'))
Traceback (most recent call last):

  File "<ipython-input-24-3a6cf53bd93e>", line 1, in <module>
    df.groupby('group').transform(mymean = ('col', 'mean'),

TypeError: transform() missing 1 required positional argument: 'func'

您只需执行
assign

df.assign(mymean = df['col1'].mean(),mymax = df['col1'].max())
Out[344]: 
   col1  mymean  mymax
0     1     2.0      3
1     2     2.0      3
2     3     2.0      3

天哪!!!就这么简单?
assign
能否与
groupby
一起工作?让我根据Hum。。。我不能让它工作。。。你能?谢谢@ℕʘʘḆḽḘ 如果与groupby链接,我认为
df.merge(df.groupby('group').agg().reset_index())
足够好了~yes。。。但我想知道,如果数据中有空组,那么我们是否会最终出错,从而在调用reset_index()时将索引弄乱
df.assign(mymean = df['col1'].mean(),mymax = df['col1'].max())
Out[344]: 
   col1  mymean  mymax
0     1     2.0      3
1     2     2.0      3
2     3     2.0      3