首页 > 解决方案 > Pandas:如何在 lambda 公式中使用 (df.groupby)

问题描述

下面的例子:

import pandas as pd
list1 = ['a','a','a','b','b','b','b','c','c','c']
list2 = range(len(list1))
df = pd.DataFrame(zip(list1, list2), columns=  ['Item','Value'])
df

给出:

在此处输入图像描述

必需:GroupFirstValue 列,如下所示。

在此处输入图像描述

这个想法是使用 lambda 公式来获取每个组的“第一个”值。例如“a”的第一个值是 0,“b”的第一个值是 3,“c”的第一个值是7. 这就是为什么这些数字出现在 GroupFirstValue 列中的原因。

注意:我知道我可以通过 2 个步骤执行此操作……一个是原始 df,第二个是按 df 分组,然后将它们合并在一起。我们的想法是看看这是否可以在一个步骤中更有效地完成。提前谢谢了!

标签: pythonpandaslambda

解决方案


groupby 并首先使用

df.groupby('Item')['Value'].first()

或者您可以使用转换并分配给框架中的新列

df['new_col'] = df.groupby('Item')['Value'].transform('first')

推荐阅读