我有一个数据框架:
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