gpt4 book ai didi

python - Pandas - 将重复的行合并为一行

转载 作者:行者123 更新时间:2023-12-01 01:14:18 27 4
gpt4 key购买 nike

所以下面我有一个 DataFrame 的示例,其中自始至终都会有多个实例,例如销售税费用行,如果存在重复项,则需要将其转换为一行,其中 Trans_Amt 的总数应为Trans_Type C - Trans_Type D。

例如,在此 DF 中,SALES TAX EXPENSE 应该只有一行,总计应为 -36239.65。

这种情况在 DF 中多次发生,具有多个不同的 ActName。我正在寻找有关执行此转换的最有效方法的见解,并将其应用于发生这种情况的任何实例。

谢谢!

              ActName  ActCode Trans_Type   Trans_Amt
0 SALES 401 C 2082748.85
1 SALES TAX EXPENSE 407 C 100000.00
30 DISCOUNTS 405 D -654.59
31 SALES TAX EXPENSE 407 D 136239.65

最佳答案

按列对数据进行分组,并将差异分配给 Amt。然后删除重复项。

df['Trans_Amt'] = df.groupby(['ActName','ActCode']).Trans_Amt.apply(lambda x: x.diff(periods=-1)).combine_first(df['Trans_Amt'])
df.drop_duplicates('ActName')

ActName ActCode Trans_Type Trans_Amt
0 SALES 401 C 2082748.85
1 SALES TAX EXPENSE 407 C -36239.65
30 DISCOUNTS 405 D -654.59

编辑:基于后续问题。如果差异应该与上一行不同,请尝试

df['Trans_Amt'] = df.groupby(['ActName','ActCode']).Trans_Amt.apply(lambda x: x.diff()).combine_first(df['Trans_Amt'])
df.drop_duplicates('ActName', keep='last')

ActName ActCode Trans_Type Trans_Amt
0 SALES 401 C 2082748.85
30 DISCOUNTS 405 D -654.59
31 SALES TAX EXPENSE 407 D 36239.65

关于python - Pandas - 将重复的行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54523285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com