如何根据使用熊猫的条件对列求和?

时间:2021-02-22 01:07:26

标签: python pandas dataframe

df 有以下列,

col1 | col2 | col3 | Jan-19 | Feb-19 | Mar-19 | Apr-19 | May-19 | Jun-19 | Jul-19 | Aug-19 | Sep-19 | Oct-19 | Nov-19 | Dec-19  | Jan-20 | Feb-20 | Mar-20 | Apr-20 | May-20 | Jun-20 | Jul-20 | Aug-20 | Sep-20 | Oct-20 | Nov-20 | Dec-20

 ab  |  cd  |      | 10     |  12    | 14     | 15     | 16     | 12     | 13     |  7     | 82     | 76     | 100    | 98      | 10     |  12    | 14     | 15     | 16     | 12     | 13      |  7    | 82     | 76     | 100    | 98

月份列有数字。我想在以下条件下总结月份列,

条件,

  1. 如果 datetime.now().strftime('%b-%Y') 是从 6 月 19 日(例如)到 10 月 19 日的任何内容,那么我想对从 10 月 19 日到 2 月 20 日的月份列求和。如果是从 6 月 20 日到 10 月 20 日,则是从 10 月 20 日到 2 月 21 日的列总和,依此类推。

  2. 如果 datetime.now().strftime('%b-%Y') 是从 11 月 19 日到 5 月 19 日之间的任何值,那么我想对从 3 月 20 日到 9 月 20 日的月份列求和。如果是从 11 月 20 日到 5 月 20 日之间的任何内容,则是 3 月 21 日到 9 月 21 日的列总和,依此类推。

最后应该有一个 Total 列。

col1 | col2 | col3 | Jan-19 | Feb-19 | Mar-19 | Apr-19 | May-19 | Jun-19 | Jul-19 | Aug-19 | Sep-19 | Oct-19 | Nov-19 | Dec-19  | Jan-20 | Feb-20 | Mar-20 | Apr-20 | May-20 | Jun-20 | Jul-20 | Aug-20 | Sep-20 | Oct-20 | Nov-20 | Dec-20 | Total

 ab  |  cd  |      | 10     |  12    | 14     | 15     | 16     | 12     | 13     |  7     | 82     | 76     | 100    | 98      | 10     |  12    | 14     | 15     | 16     | 12     | 13      |  7    | 82     | 76     | 100    | 98     | 296

有没有办法为此创建一个通用条件,以便它可以在 x 个月和 y 年中工作?

1 个答案:

答案 0 :(得分:0)

对于您真正想要做什么仍然感到困惑。

但对于您的情况,我的建议是您可以按名称选择列并转置表格。 然后您可以对沿行轴的值求和。

在 DataFrame 上花费的时间并不多。

在我看来,DataFrame 中跨 col 轴的操作总是比跨行轴更难。 由于在行操作中,可以使用 .query() 函数轻松过滤他们想要的条目。 但不是在 col 方向。