如何合并两个数据框架与内部连接,没有重复的列?



我有一个数据框架:

ItemName Category
item1    cat1
item2    cat1
item3    cat1
item4    cat1
item5    cat2
item6    cat2

和类似的

CategoryName Element
cat1         element1
cat2         element2

我想将两个数据框合并为一个,基于类别列,但现在我有两个列有类别。这将是理想的结果:

ItemName Category Element
item1    cat1     element1
item2    cat1     element1
item3    cat1     element1
item4    cat1     element1
item5    cat2     element2
item6    cat2     element2

但是我有列类别和CategoryName的副本的结果。如何在合并数据框架时解决此重复问题?我为合并做了什么:

result_df= df1.merge(
df2,
left_on='Category',
right_on='CategoryName',
how='inner')

不幸的是,您需要重命名列:

>>> df1.merge(df2.rename({'CategoryName': 'Category'}, axis=1), on='Category')
ItemName Category   Element
0    item1     cat1  element1
1    item2     cat1  element1
2    item3     cat1  element1
3    item4     cat1  element1
4    item5     cat2  element2
5    item6     cat2  element2
>>> 

或者你必须放弃它:

>>> df1.merge(df2, left_on='Category', right_on='CategoryName').drop('CategoryName', axis=1)
ItemName Category   Element
0    item1     cat1  element1
1    item2     cat1  element1
2    item3     cat1  element1
3    item4     cat1  element1
4    item5     cat2  element2
5    item6     cat2  element2
>>> 

您可以使用pd.Series.map:

df["Element"] = df["Category"].map(df2.set_index("CategoryName")["Element"])
print (df)
ItemName Category   Element
0    item1     cat1  element1
1    item2     cat1  element1
2    item3     cat1  element1
3    item4     cat1  element1
4    item5     cat2  element2
5    item6     cat2  element2

最新更新