Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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 Groupby,并对具有first和last的每列应用不同的函数_Python_Pandas - Fatal编程技术网

Python Groupby,并对具有first和last的每列应用不同的函数

Python Groupby,并对具有first和last的每列应用不同的函数,python,pandas,Python,Pandas,我尝试对列进行分组,然后对每个列应用不同的函数。我引用了,我的代码如下所示 def f(x): d = {} d['a'] = x['a'].max() d['b'] = x['b'].first() d['c'] = x['c'].last() return pd.Series(d, index=['a', 'b', 'c']) require_data = required_data.groupby(['S','id', 'lane', 'times

我尝试对列进行分组,然后对每个列应用不同的函数。我引用了,我的代码如下所示

def f(x):
    d = {}
    d['a'] = x['a'].max()
    d['b'] = x['b'].first()
    d['c'] = x['c'].last()
    return pd.Series(d, index=['a', 'b', 'c'])

require_data = required_data.groupby(['S','id', 'lane', 'timestamp','E']).apply(f)
由于第一个函数,我得到了以下错误

TypeError: first() missing 1 required positional argument: 'offset'
但我可以用first fine运行groupby

require_data = required_data.groupby(['S','id', 'lane', 'timestamp','E']).first()
错误的原因是什么?

更好的做法是使用聚合方法传递列名 和 :

如果您想使用自己的自定义函数,有必要选择“按位置”,并使用 或与 ,但如@Erfan所述,谢谢:

由于效率问题,不鼓励使用自己的自定义函数

更好的用法是使用聚合方法传递列名 和 :

如果您想使用自己的自定义函数,有必要选择“按位置”,并使用 或与 ,但如@Erfan所述,谢谢:

由于效率问题,不鼓励使用自己的自定义函数


我想说的是,出于效率考虑,非常不鼓励使用您自己的自定义函数。非常感谢。这正是我想要的。我要提到的是,由于效率原因,使用您自己的自定义函数是非常不鼓励的。非常感谢。这正是我想要的
require_data = (required_data.groupby(['S','id', 'lane', 'timestamp','E'])
                             .agg({'a':'max', 'b':'first', 'c':'last'}))
def f(x):
    d = {}
    d['a'] = x['a'].max()
    d['b'] = x['b'].iat[0]
    d['c'] = x['c'].iat[-1]
    return pd.Series(d, index=['a', 'b', 'c'])