【发布时间】:2023-02-15 14:52:55
【问题描述】:
我有一个包含多个列的数据框,如下所述。
df1
a b c d e f dr1 a1 de1 dr2 a2 de2 dr3 a3 de3 dr4 a4 de4
x y z 1 2 3 abc 08:00 09:00 abc 07:00 08:00 abc 08:00 09:00 abc 08:00 09:00
x1 y1 z1 7 9 2 abc 14:00 15:00 abc 14:00 15:00 abc 13:00 14:00 abc 13:00 14:00
x2 y2 z2 2 4 5 abc 21:00 22:00 abc 20:00 21:00 abc 20:00 21:00 abc 20:00 21:00
我有另一个数据框,如下所述。
df2
a b c d e f date dr a de
x y z 1 2 3 2022-01-01
x y z 1 2 3 2022-01-02
x y z 1 2 3 2022-01-03
x y z 1 2 3 2022-01-04
x1 y1 z1 7 9 2 2022-01-01
x1 y1 z1 7 9 2 2022-01-02
x1 y1 z1 7 9 2 2022-01-03
x1 y1 z1 7 9 2 2022-01-04
x2 y2 z2 2 4 5 2022-01-01
x2 y2 z2 2 4 5 2022-01-02
x2 y2 z2 2 4 5 2022-01-03
x2 y2 z2 2 4 5 2022-01-04
现在我想用 df1 的值填充 df2 的“dr”、“a”、de“列,这样对于 2022-01-01,值从 df1 的“dr1”、“a1”、“de1”列填充. 对于 2022-01-02,值从“dr2”、“a2”、“de2”列填充。对于 2022-01-03,值从“dr3”、“a3”、“de3”等填充. 每个组的日期按升序排列,并且有多个组。
我曾尝试使用 Rank 方法按日期对 df2 进行排名并填充列,但它不起作用。
【问题讨论】:
-
请以可以作为数据框复制的格式发布您的数据。
-
日期来自哪里?
-
@mozway Date 使用 start_date = pd.to_datetime('2022-01-01') 添加到代码中,然后在一组列上使用 transform 和 groupby 方法