【发布时间】:2023-03-24 23:00:01
【问题描述】:
我有从一月到十二月的列,根据当前月份,我必须得到月份的总和。例如:如果当前月份是四月,我的代码应该添加从一月到四月的所有列并忽略所有其他列。
原表:
| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|---|
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 1 | 3 | 5 | |
| 1 | 23 | 4 | 5 | 76 | 7 | 423 | 57 | 689 | 345 | 23 | 2 | |
我有过去 3 年包含多个列的庞大数据集,比如 2015 年、2016 年、2017 年。每年我都有如下列: Jan'、'Feb'、'Mar' 等等。
我需要分别获取每一年每一列的总和。所以我列了清单,然后我把它们加起来。但是这种方法太冗长了。
我还尝试将其他列(在此示例中为 5 月至 12 月)中的值设置为零,以便仅添加 1 月至 4 月。这种方法也行得通,但它涉及大量代码,并且在将来需要进行任何新修改时存在太多手动错误的空间。
list_2015 = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
df1['2015_Dec_YTD'] = df1.loc[:,list_2015].sum(axis=1)
如果我以这种方式创建,它可以正常工作,但是代码会变得太长,因为每个月我都必须创建一个单独的列表,以便添加这些列。
我正在寻找一种更简单的方法来在数据框中有条件地添加列以创建新列。基本工作流程将是: 如果 current_month = 四月,那么(到当前月份的总和)=(一月+二月+三月+四月)
预期输出:
| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | SUM till current month |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-------------------------|
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 1 | 3 | 5 | 14 |
| 1 | 23 | 4 | 5 | 76 | 7 | 423 | 57 | 689 | 345 | 23 | 2 | 33 |
【问题讨论】:
标签: python pandas dataframe multiple-columns