Python:如何在比较其他列时将列值填充到另一个数据框中的新列?

Posted

技术标签:

【中文标题】Python:如何在比较其他列时将列值填充到另一个数据框中的新列?【英文标题】:Python : How to populate a column value to new column in another dataframe on comparing other column? 【发布时间】:2022-01-13 22:47:27 【问题描述】:

有两个数据框

df

Store   Sku     Fixture
11      AA      Product
12      BB      Tier

df1

Store   Sku     Bit
11      AA      1
11      AA      2
12      CC      1
12      CC      2
12      CC      3

因此,比较数据帧中的“存储”列,需要从 df 填充 df1 中的“夹具”列。 预期输出:

Store   Sku     Bit     Fixture
11      AA      1       Product
11      AA      2       Product
12      CC      1       Tier
12      CC      2       Tier
12      CC      3       Tier

提前致谢!

【问题讨论】:

【参考方案1】:

您正在使用数据框作为关系数据库。如果您熟悉 SQL,您会发现 this documentation 很有用。

可以使用Series.mapmerge 来实现加入。

选项 1:地图

首先,构建一个包含用于映射的关系的字典:

map_dict = df.set_index('Store')['Fixture'].to_dict()

set_index 使用列作为行标签。默认不修改原来的DataFrame

然后,我们使用这个字典来映射“Store”Series,并将输出附加到df1

df1['Fixture'] = df1['Store'].map(map_dict)

选项 2:merge

您可以使用合并执行两个DataFrames 的连接。首先,我们去掉df的'Sku'列,这样列名就没有问题了,然后进行join:

joined = pd.merge(df1, df[['Store', 'Fixture']], on='Store')

如果您不删除 df 的“Sku”列,您最终将获得来自 df1 的“Sku_x”列和来自 df 的“Sku_y”列。

【讨论】:

以上是关于Python:如何在比较其他列时将列值填充到另一个数据框中的新列?的主要内容,如果未能解决你的问题,请参考以下文章

将列上的纪元时间保存到另一列 postgres

如何将列值分隔为列名?

将列从一个DataFrame复制到另一个DataFrame会产生NaN值吗?

将列值转换为行值

如何将列值从存储过程中的另一个表更新到表中?

将列值与第一行进行比较并保留 R 中的原始值