Python 基于其他列创建一个新列作为另一个数据帧的索引

Python 基于其他列创建一个新列作为另一个数据帧的索引,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个数据帧,其中至少有两列col1和col2。我还有另一个数据帧,它的列名是col1中的值,索引是col2中的值 import pandas as pd df1 = pd.DataFrame( {'col1': ['x1', 'x2', 'x2'], 'col2': ['y0', 'y1', 'y0']}) print(df1) col1 col2 0 x1 y0 1 x2 y1 2 x2 y0 print(df2) y0 y1 x1 1

假设我有一个数据帧,其中至少有两列col1和col2。我还有另一个数据帧,它的列名是col1中的值,索引是col2中的值

import pandas as pd
df1 = pd.DataFrame( {'col1': ['x1', 'x2', 'x2'], 'col2': ['y0', 'y1', 'y0']})
print(df1)
  col1 col2
0   x1   y0
1   x2   y1
2   x2   y0

print(df2)
     y0   y1
x1    1    4
x2    2    5
x3    3    6
现在我想添加col3,它在col1的索引处和col2的列中给出第二个数据帧的值。 结果应该如下所示:

   col1  col2  col3
0    x1    y0     1
1    x2    y1     5
2    x2    y0     2
谢谢大家!

您可以通过以下方式使用新的
df

另一个解决方案是创建新的
系列

简单连接 Pandas在索引和列上都支持联接操作,这意味着您可以执行以下操作:

df1.merge(df2, left_on='col1', right_index=True)
产生

  col1 col2  y0  y1
0   x1   y0   1   4
1   x2   y1   2   5
2   x2   y0   2   5
下一步是将正确的值输入
col3

申请 这有点低效,但它是一种将正确的数据放入一列的方法

df['col3'] = df[['col2', 'y0', 'y1']].apply(lambda x: x[int(x[0][1]) + 1], axis=1)

第二个很好。@NickilMaveli-谢谢。
  col1 col2  y0  y1
0   x1   y0   1   4
1   x2   y1   2   5
2   x2   y0   2   5
df['col3'] = df[['col2', 'y0', 'y1']].apply(lambda x: x[int(x[0][1]) + 1], axis=1)