在groupby上使用map或applymap

2024-09-22 20:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Pandas数据框,我正在通过数据框中的一列对其进行分组。然后我有一个函数,需要对每个组应用一次。该函数用于修改组。所以我想做的是这样的:

df = pd.DataFrame([[1, 'coupe', 2004], [2, 'sedan', 2004], [1, 'sedan', 2015], [3, 'coupe', 2010]], columns=['group_id', 'model', 'year_manufactured'])
^{tb1}$
def my_function(group):
    if 'coupe' in group['model']:
        group['model'].replace('coupe', 'hatchback', inplace=True)
        group['year_manufactured'].replace(2004, 2005, inplace=True)
    else:
        newest_car = group['year_manufactured'].idxmax()
        newest_car_type = group.loc[newest_car, 'model']
        group['model'] = group['model'].map(lambda x : x + newest_car_type)

df.groupby('group_id').map(my_function)

但是,映射不能应用于groupby。有没有什么方法可以在不影响速度的情况下解决这个问题。此外,我拥有的函数不能只映射到数据库的每一行,因为它对一行的操作方式取决于前面的行


Tags: 数据函数iddfmodelmygroupfunction