【发布时间】:2021-12-21 08:28:30
【问题描述】:
我有一个如下所示的数据框:
data1 = [['2020-10-01', '07-08', 3.0 ], ['2020-10-01', '08-09', 2.0], ['2020-10-01', '07-08', 3.0], ['2020-10-01', '07-08', 3.0],['2020-10-02', '07-08', 3.0 ], ['2020-10-02', '08-09', 3.0], ['2020-10-02', '07-08', 3.0], ['2020-10-02', '08-09', 3.0], ['2020-10-03', '09-10', 9.0], ['2020-10-03', '09-10', 9.0]]
df1 = pd.DataFrame(data1, columns = ['Date', 'TimeCategory', 'Value_TimeCategory_total'])
| Date | TimeCategory | Value_TimeCategory_total |
|---|---|---|
| 2020-10-01 | 07-08 | 3.0 |
| 2020-10-01 | 08-09 | 2.0 |
| 2020-10-01 | 07-08 | 3.0 |
| 2020-10-01 | 07-08 | 3.0 |
| 2020-10-02 | 07-08 | 3.0 |
| 2020-10-02 | 08-09 | 3.0 |
| 2020-10-02 | 07-08 | 3.0 |
| 2020-10-02 | 08-09 | 3.0 |
| 2020-10-03 | 09-10 | 9.0 |
| 2020-10-03 | 09-10 | 9.0 |
Dataframe 包含一天内每个 TimeCategory 的总值。
现在我想在此数据框中添加一列,显示每天每个 TimeCategory 的平均值。
如果我有 3 行日期为 2020-10-01 且 TimeCategory 为 07-08 且总值等于 3.0,我希望平均值等于 1.0。
结果应该是这样的。
data2 = [['2020-10-01', '07-08', 3.0 , 1.0], ['2020-10-01', '08-09', 2.0, 2.0], ['2020-10-01', '07-08', 3.0, 1.0], ['2020-10-01', '07-08', 3.0, 1.0],['2020-10-02', '07-08', 3.0, 1.5 ], ['2020-10-02', '08-09', 3.0, 1.5], ['2020-10-02', '07-08', 3.0, 1.5], ['2020-10-02', '08-09', 3.0, 1.5], ['2020-10-03', '09-10', 9.0, 4.5], ['2020-10-03', '09-10', 9.0, 4.5]]
df2 = pd.DataFrame(data2, columns = ['Date', 'TimeCategory', 'Value_TimeCategory_total' , 'Value_TimeCategory_Row_Average'])
df2
| Date | TimeCategory | Value_TimeCategory_total | Value_TimeCategory_Row_Average |
|---|---|---|---|
| 2020-10-01 | 07-08 | 3.0 | 1.0 |
| 2020-10-01 | 08-09 | 2.0 | 2.0 |
| 2020-10-01 | 07-08 | 3.0 | 1.0 |
| 2020-10-01 | 07-08 | 3.0 | 1.0 |
| 2020-10-02 | 07-08 | 3.0 | 1.5 |
| 2020-10-02 | 08-09 | 3.0 | 1.5 |
| 2020-10-02 | 07-08 | 3.0 | 1.5 |
| 2020-10-02 | 08-09 | 3.0 | 1.5 |
| 2020-10-03 | 09-10 | 9.0 | 4.5 |
| 2020-10-03 | 09-10 | 9.0 | 4.5 |
我不想使用 group by,因为我需要数据框的所有行(包括重复行)。
非常感谢您的帮助。
【问题讨论】: