【问题标题】:Create new dataframe column based on conditions and aggregated values from other columns根据条件和其他列的聚合值创建新的数据框列
【发布时间】:2019-04-24 22:03:02
【问题描述】:

我得到了一个如下所示的数据框:

| DATETIME STR     | VALUE |
|------------------|-------|
| 23/04/2019 05:00 | 500   |
| 23/04/2019 05:00 | 300   |
| 23/04/2019 05:00 | 150   |
| ................ | ...   |
| 23/04/2019 23:55 | ...   |

我想浏览一次数据框并添加一个新列,其中包含每个单元格占总单元格的百分比。不同时期的总数不同。

例如,上述 23/04/2019 05:00 的百分比为:

| DATETIME STR     | VALUE | PERCENTAGE |
|------------------|-------|------------|
| 23/04/2019 05:00 | 500   | 52.63 %    |
| 23/04/2019 05:00 | 300   | 31.58 %    |
| 23/04/2019 05:00 | 150   | 15.79 %    |
| 23/04/2019 10:00 | 600   | ..... %    |
| ................ | ...   | ..... %    |
| 23/04/2019 23:55 | ...   | ..... %    |

我该怎么做?

我想我正在看类似的东西:

dataframe["PERCENTAGE"] = (100 * dataframe["VALUE"])/sum_of_same_date

我不知道如何计算每个单元格的sum_of_same_date,同时我正在通过数据框填充新列。

任何帮助将不胜感激。

【问题讨论】:

  • 你不能一次完成。对于每个日期,您需要查看该日期的所有值,然后返回并填写百分比。有快速的方法可以做到这一点,它仍然是线性时间,但从技术上讲,您不能一次性完成。截至发表此评论时,提供的两个答案都是这样做的。

标签: python pandas dataframe aggregate


【解决方案1】:

试试transform

dataframe["PERCENTAGE"] = (100 * dataframe["VALUE"])/dataframe.groupby('DATETIME STR')['VALUE'].transform('sum')

【讨论】:

  • 哇!谢谢。正是我需要的。会读一些关于它的,因为我不熟悉变换。
猜你喜欢
  • 1970-01-01
  • 2019-07-25
  • 2021-10-03
  • 2020-09-24
  • 2017-01-03
  • 1970-01-01
  • 2020-09-17
  • 2021-08-30
  • 1970-01-01
相关资源
最近更新 更多