Python 基于其他列创建一个新列作为另一个数据帧的索引
假设我有一个数据帧,其中至少有两列col1和col2。我还有另一个数据帧,它的列名是col1中的值,索引是col2中的值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
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)