分组行和定义列聚合规则

Grouping Rows and Defining Column Aggregating Rules

我希望在 pandas 中合并多行不同的数据类型。我有我的 .groupby() 参数:['ID']。当按 ['ID'] 分组时,列 ['A'] 可能会重复值,或者每行的数据会有所不同。列 ['B'] 只需通过 .sum().

进行聚合
input_df

ID        A        B
140-1    Apple     3.2
140-1    Pear      5.0
143-2    Plum      1.2
143-2    Plum      2.0

什么是 1) 按 ['ID'] 分组的好方法,2) 如果分组后重复显示 ['A'] 的值,如果分组后不重复显示 ['A'] 的第一个值,和 3) 将列 ['B'] 求和到一个新的数据框中?

output_df

ID        A        B
140-1    Apple     8.2
143-2    Plum      3.2

尝试:

input_df.groupby('ID').apply(lambda f: pd.DataFrame({'A': f.A.head(1), 'B': f.B.sum()})).reset_index(level=0)


#       ID      A    B
# 0  140-1  Apple  8.2
# 2  143-2   Plum  3.2

你可以试试

df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()

    ID      A       B
0   140-1   Apple   8.2
1   143-2   Plum    3.2