【发布时间】:2020-01-07 14:19:06
【问题描述】:
我有一个如下所示的数据框:
+------+------------+-------+--------------+
| name | date | value | replacement |
+------+------------+-------+--------------+
| A | 20/11/2016 | 10 | NaN |
| C | 20/11/2016 | 8 | [A,B] |
| B | 20/11/2016 | 12 | NaN |
| E | 25/12/2016 | 16 | NaN |
| F | 25/12/2016 | 18 | NaN |
| D | 25/12/2016 | 11 | [E,F] |
+------+------------+-------+--------------+
我想做什么:
对于在列 'replacement' 中有名称列表的每一行,我希望它的 'value' 平均分布在包含这些替换 + 的行中同一天。
对于前面的示例,输出将如下所示:
+------+------------+-------+------------------+
| name | date | value | additional value |
+------+------------+-------+------------------+
| A | 20/11/2016 | 10 | 4 |
| B | 20/11/2016 | 12 | 4 |
| A | 25/12/2016 | 16 | 5.5 |
| B | 25/12/2016 | 18 | 5.5 |
+------+------------+-------+------------------+
我设法找到了一种直接执行分配的方法,而无需通过拆分这些行并按名称 + 日期分组来创建新列,但是 1/ 它太慢了 + 2/我确实需要创建那个额外的列并且可以找不到办法。
【问题讨论】:
-
列表的长度是否总是等于该行之前的记录数?
标签: python pandas dataframe data-processing