我有以下两个pandas数据帧
df1=
selected0 selected1
2017-01-01 product1 product2
2017-01-02 product1 product2
2017-01-03 product3 product4
df2 =
selected0 selected1
2017-01-01 0.2 0.3
2017-01-02 0.3 0.4
2017-01-03 0.5 0.6
现在我想将这两个数据帧转换为一个类似于以下
的数据帧 product1 product2 product3 product4
2017-01-01 0.2 0.3 NaN NaN
2017-01-02 0.3 0.4 NaN NaN
2017-01-03 NaN NaN 0.5 0.6
是否有更多pythonic方式可以在不绕过数据帧中的每一行的情况下执行此操作?非常感谢你
答案 0 :(得分:1)
您可以将两个数据帧转换为长格式,然后根据日期合并并选择*,然后将结果转换回宽格式:
(df1.stack().to_frame("Product") # reshape df1 to long format
.join(df2.stack().rename("Value")) # reshape df2 to long format and join with df1
.reset_index(level = 1, drop = True) # drop the original column names
.pivot(columns="Product", values="Value")) # reshape to wide format
答案 1 :(得分:1)