gpt4 book ai didi

python - 如何对 pandas 中的相同列(按后缀区分)求和?

转载 作者:行者123 更新时间:2023-12-03 08:15:34 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

total_customers     total_customer_2021-03-31  total_purchases    total_purchases_2021-03-31
1 10 4 6
3 14 3 2

现在,我想按行对除后缀之外相同的列进行求和。即预期输出是:

total_customers      total_purchases   
11 10
17 5

我无法手动执行此操作的问题是因为我有 100 多个列对,所以我需要一种有效的方法来执行此操作。此外,列的顺序也是不可预测的。你有什么建议吗?谢谢!

最佳答案

我们需要以某种方式获得 Index列,因此成对的列共享相同的名称,那么我们可以 groupby sumaxis=1上:

cols = pd.Index(['total_customers', 'total_customers',
'total_purchases', 'total_purchases'])

result_df = df.groupby(cols, axis=1).sum()

通过所示示例,我们可以 str.replace可选的 s,后跟下划线,后跟日期格式(四个数字-两个数字-两个数字)和一个 s。此模式可能需要根据实际的列名称进行修改:

cols = df.columns.str.replace(r's?_\d{4}-\d{2}-\d{2}$', 's', regex=True)
result_df = df.groupby(cols, axis=1).sum()

result_df:

   total_customers  total_purchases
0 11 10
1 17 5

设置和导入:

import pandas as pd

df = pd.DataFrame({
'total_customers': [1, 3],
'total_customer_2021-03-31': [10, 14],
'total_purchases': [4, 3],
'total_purchases_2021-03-31': [6, 2]
})

关于python - 如何对 pandas 中的相同列(按后缀区分)求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69533549/

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