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'])