gpt4 book ai didi

python - 根据列名称中的模式对列求和

转载 作者:行者123 更新时间:2023-12-01 09:30:11 24 4
gpt4 key购买 nike

让我们从非常简化的抽象示例开始,我有一个像这样的数据框:

import pandas as pd

d = {'1-A': [1, 2], '1-B': [3, 4], '2-A': [3, 4], '5-B': [2, 7]}
df = pd.DataFrame(data=d)

1-A 1-B 2-A 5-B
0 1 3 3 2
1 2 4 4 7

我正在寻找优雅的 pandastic 解决方案来拥有这样的数据框:

     1    2    5
0 4 3 2
1 6 4 7

为了使示例更具体,第 1-A 列表示人员 id=1,费用类别 A。行是每月的费用。结果,我想要每个人每月的跨类别支出(因此第 1 列是第 1-A 列和 1-B 列的总和)。请注意,当没有费用时,没有 0 列。当然,它应该准备好容纳更多列(id 和类别)。

我非常确定存在将列选择和求和操作良好分离的智能解决方案。

最佳答案

使用groupby使用带有 split 的 lambda 函数并选择第一个值,按列分组添加 axis=1:

df1 = df.groupby(lambda x: x.split('-')[0], axis=1).sum()
#alternative
#df1 = df.groupby(df.columns.str.split('-').str[0], axis=1).sum()
print (df1)

1 2 5
0 4 3 2
1 6 4 7

关于python - 根据列名称中的模式对列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038718/

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