【问题标题】:How do I sum columns on the basis of a condition using pandas?如何根据使用熊猫的条件对列进行求和?
【发布时间】:2021-05-24 06:58:17
【问题描述】:

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 年?

【问题讨论】:

  • 澄清一下 - 您想根据今天的日期对各列求和吗?
  • 没错。
  • 如果今天的日期不是 2019 年,您希望发生什么?我对逻辑以及如何解释今天的日期感到困惑。 datetime.now().strftime('%b-%y') == 'Feb-21'
  • 为了更清楚,我已经编辑了这个问题。还在纠结吗?

标签: python pandas dataframe


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 2022-01-25
    • 2022-11-14
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多