首页 > 解决方案 > 当列长度不同时,将一个 pandas 列的值映射到另一列

问题描述

我有两个包含以下数据的数据框

data1 = [['date1', 10], ['date2', 15], ['date3', 14]]
df1 = pd.DataFrame(data1, columns = ['date', 'value'])

data2 = [['date1', 1], ['date2', 2], ['date3', 3], ['date1', 4], ['date2', 5], ['date3', 6]]
df2 = pd.DataFrame(data2, columns = ['date', 'value'])

示例 1

基本上我希望它看起来像这样

data3 = [['date1', 1, 10], ['date2', 2, 15], ['date3', 3, 14], ['date1', 4, 10], ['date2', 5, 15], ['date3', 6, 14]]
df3 = pd.DataFrame(data3, columns = ['date', 'value', 'other value'])
df3

在此处输入图像描述

第一个数据帧中的值映射到特定的行值。这在熊猫中可能吗?我无法找到如何做到这一点,我开始相信这是不可能的。

标签: pythonpandas

解决方案


您可以使用assign()方法和set_index()方法:

df3=df2.set_index('date').assign(other_value=df1.set_index('date'))

或者

正如@anky 在评论使用merge()方法中所建议的那样,因为它更容易编写:

df3=df2.merge(df1,on='date',how='left')

性能:

在此处输入图像描述


推荐阅读