python-3.x 如何合并两个 Dataframe ,但基于pandas中的多个列

wgx48brx  于 2023-06-07  发布在  Python
关注(0)|答案(1)|浏览(119)

假设我有两个dataframe:df1:

A       B      C       D   
0   test1   test2  test3   test4
1   test22  test33 test23  test432
2   test54  test32 tes353  test98

df2:

A        B
0  test98   value1
1  test1    value2
2  test33   value3

基本上,来自 Dataframe 2的ColumnA可以是来自 Dataframe A的任何列的值。最后,我想要一个像这样的理想输出:

A       B      C       D         Value
0   test1   test2  test3   test4     value2
1   test22  test33 test23  test432   value3
2   test54  test32 tes353  test98    value1

当然,这只是一个原型,我有一个复杂的 Dataframe ...那么,有没有一种方法可以根据我所描述的这些条件来合并它呢?

jpfvwuh4

jpfvwuh41#

你可以stackmap,然后groupby.first

df1['Value'] = df1.stack().map(df2.set_index('A')['B']).groupby(level=0).first()
  • 注意,这需要有一个非重复的索引。*

输出:

A       B       C        D   Value
0   test1   test2   test3    test4  value2
1  test22  test33  test23  test432  value3
2  test54  test32  tes353   test98  value1

如果您在df1中有其他列,则只保留感兴趣的列:

df1['Value'] = (df1[['A', 'B', 'C', 'D']]
                   .stack()
                   .map(df2.set_index('A')['B'])
                   .groupby(level=0).first()
                )

相关问题