如何用pandas中的其他数据帧的值提取一个数据帧的值?

时间:2014-02-05 09:25:16

标签: python merge pandas dataframe

假设您创建了下一个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中有一个函数允许我非常有效地执行此操作。

感谢您的帮助......

1 个答案:

答案 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']]

获得预期的输出