我有一个包含多列的数据框,如下所述。
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
我有另一个 Dataframe 如下所述。
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
现在我想用df 1中的值填充df 2的“dr”、“a”、“de”列,以便对于2022-01-01,从df 1的“dr 1”、“a1”、“de 1”列填充值。对于2022-01-02,从“dr 2”、“a2”、“de 2”列填充值。对于2022-01-03,从“dr 3”填充值,“a3”、“de 3”等。每个组的日期都是升序排列的,并且有多个组。
我试过使用排名方法对df 2进行日期排名并填充列,但它不起作用。
3条答案
按热度按时间y4ekin9u1#
试试看:
对其他两列重复此操作,只做一点更改。
sulc1iza2#
不清楚您如何准确地生成日期(我假设2021 - 12 - 31+由列名上的数字定义的天数)。
对于常规整形,您需要
pandas.wide_to_long
:请注意,列名不能重复,因此首先需要重命名"a"(此处为"A")。
输出:
xtfmy6hx3#
输出: