首页 > 解决方案 > 熊猫:如何根据不同的单元格将熊猫中的值从数据帧复制到另一个数据帧

问题描述

我有df1

发货日期 价格
2014 年 7 月 15 日 5
2015 年 8 月 19 日 9
2016 年 9 月 20 日 7

我也有df2

发货日期
2015 年 8 月 19 日
2014 年 7 月 15 日
2016 年 9 月 20 日
2014 年 7 月 15 日

我需要 df2 的最终输出

发货日期 价格
2015 年 8 月 19 日 9
2014 年 7 月 15 日 5
2016 年 9 月 20 日 7
2014 年 7 月 15 日 5

我还为 df2 添加了“价格”列。我需要帮助将“价格”列的每个单元格中的值设置为与 df1 中的日期对应的价格

标签: pythonpandasdataframe

解决方案


你可以通过几种方式做到这一点。

合并“Ship_Date”上的 2 个数据框

new_df = df2.merge(df1, on="Ship_Date", how="left")

print(new_df)
    Ship_Date  Price
0  08/19/2015      9
1  07/15/2014      5
2  07/15/2014      5
3  09/20/2016      7

使用该map函数创建一个新列:

date_mappings = df1.set_index("Ship_Date")["Price"]
df2["Price"] = df2["Ship_Date"].map(date_mappings)

print(df2)
    Ship_Date  Price
0  08/19/2015      9
1  07/15/2014      5
2  09/20/2016      7
3  07/15/2014      5

暂时将 df1.index 设置为“Ship_Date”,然后重新索引 df1,使其与 df2 具有相同的形状:

new_df = df1.set_index("Ship_Date").reindex(df2["Ship_Date"]).reset_index()

print(new_df)
    Ship_Date  Price
0  08/19/2015      9
1  07/15/2014      5
2  09/20/2016      7
3  07/15/2014      5

推荐阅读