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.map
或merge
来实现加入。
选项 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
您可以使用合并执行两个DataFrame
s 的连接。首先,我们去掉df
的'Sku'列,这样列名就没有问题了,然后进行join:
joined = pd.merge(df1, df[['Store', 'Fixture']], on='Store')
如果您不删除 df
的“Sku”列,您最终将获得来自 df1
的“Sku_x”列和来自 df
的“Sku_y”列。
【讨论】:
以上是关于Python:如何在比较其他列时将列值填充到另一个数据框中的新列?的主要内容,如果未能解决你的问题,请参考以下文章