我正在尝试对列进行分组,然后对每个列应用不同的功能。我引用了to the answer here,我的代码如下所示
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'
但是我可以以罚款的方式运行groupby
require_data = required_data.groupby(['S','id', 'lane', 'timestamp','E']).first()
错误原因是什么
这里最好使用GroupBy.agg
,可以使用聚合方法GroupBy.agg
来传递列名和GroupBy.first
:
GroupBy.first
如果要使用自己的自定义功能,则需要按位置选择GroupBy.last
或搭配GroupBy.last
,但就像提到的@Erfan一样,谢谢:
出于效率的考虑,强烈建议您不要使用自定义功能。
require_data = (required_data.groupby(['S','id', 'lane', 'timestamp','E'])
.agg({'a':'max', 'b':'first', 'c':'last'}))