我想在pandas中合并多行不同的dtypes。我有.groupby()
参数:['ID']
。列['A']
可能会在按['ID']
分组时重复值,或者每行的数据会有所不同。只需要通过['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
答案 0 :(得分:1)
尝试:
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
答案 1 :(得分:1)
你可以尝试
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