如何在pandas中的聚合函数中使用分组值?
how to use grouping value in aggregation function in pandas?
我的数据框由两列组成:第一列用于组名称,第二列用于与给定组相关的值(因此一个组可以有多个值)。
我想连接值以便为每个组保留一个条目并添加一些额外信息。
grouped = df.groupby('group_name').agg(lambda x: 'some additional info:\n{}'.format('\n'.join(x)))
分组的示例行如下所示:
Citrus "some additional info\nLemon\nOrange\nGrapefruit"
是否有一些优雅的方法可以将 group_name 包含在此类聚合中,以便结果如下所示?
Citrus "some additional info\nCitrus\nLemon\nOrange\nGrapefruit"
使用:
print (df)
group_name col
0 Citrus Lemon
1 Citrus Orange
2 Citrus Grapefruit
因为 GroupBy.agg
方法可以分别处理每一列 将列转换为索引和 select 索引值:
f = lambda x: 'some additional info:\n{}\n{}'.format(x.index[0], '\n'.join(x))
grouped = df.set_index('group_name').groupby('group_name')['col'].agg(f)
print (grouped)
group_name
Citrus some additional info:\nCitrus\nLemon\nOrange\n...
Name: col, dtype: object
或者可以使用 GroupBy.apply
:
f = lambda x: 'some additional info:\n{}\n{}'.format(x.name, '\n'.join(x['col']))
grouped = df.groupby('group_name').apply(f)
print (grouped)
group_name
Citrus some additional info:\nCitrus\nLemon\nOrange\n...
dtype: object
我的数据框由两列组成:第一列用于组名称,第二列用于与给定组相关的值(因此一个组可以有多个值)。 我想连接值以便为每个组保留一个条目并添加一些额外信息。
grouped = df.groupby('group_name').agg(lambda x: 'some additional info:\n{}'.format('\n'.join(x)))
分组的示例行如下所示:
Citrus "some additional info\nLemon\nOrange\nGrapefruit"
是否有一些优雅的方法可以将 group_name 包含在此类聚合中,以便结果如下所示?
Citrus "some additional info\nCitrus\nLemon\nOrange\nGrapefruit"
使用:
print (df)
group_name col
0 Citrus Lemon
1 Citrus Orange
2 Citrus Grapefruit
因为 GroupBy.agg
方法可以分别处理每一列 将列转换为索引和 select 索引值:
f = lambda x: 'some additional info:\n{}\n{}'.format(x.index[0], '\n'.join(x))
grouped = df.set_index('group_name').groupby('group_name')['col'].agg(f)
print (grouped)
group_name
Citrus some additional info:\nCitrus\nLemon\nOrange\n...
Name: col, dtype: object
或者可以使用 GroupBy.apply
:
f = lambda x: 'some additional info:\n{}\n{}'.format(x.name, '\n'.join(x['col']))
grouped = df.groupby('group_name').apply(f)
print (grouped)
group_name
Citrus some additional info:\nCitrus\nLemon\nOrange\n...
dtype: object