假设您创建了下一个python pandas数据框:
In[1]: print df1.to_string()
ID value
0 1 a
1 2 b
2 3 c
3 4 d
In[2]: print df2.to_string()
Id_a Id_b
0 1 2
1 4 2
2 2 1
3 3 3
4 4 4
5 2 2
如何使用下一个值创建 df_ids_to_values 框架:
In[2]: print df_ids_to_values.to_string()
value_a value_b
0 a b
1 d b
2 b a
3 c c
4 d d
5 b b
换句话说,我想用 df1 中的相应值替换 df2 的ID。我已经尝试通过执行for循环来做到这一点,但它非常慢并且我正在跳跃,pandas中有一个函数允许我非常有效地执行此操作。
感谢您的帮助......
答案 0 :(得分:2)
首先在df1上设置索引
df1 = df1.set_index('ID')
然后加入两列
df = df2.join(df1, on='Id_a')
df = df.rename(columns = {'value' : 'value_a'})
df = df.join(df1, on='Id_b')
df = df.rename(columns = {'value' : 'value_b'})
结果:
> df
Id_a Id_b value_a value_b
0 1 2 a b
1 4 2 d b
2 2 1 b a
3 3 3 c c
4 4 4 d d
5 2 2 b b
[6 rows x 4 columns]
(并使用df[['value_a','value_b']]
)