当它们都在Pandas中共享索引时,将列从一个数据框复制到另一个数据框

时间:2019-07-17 17:50:51

标签: python pandas dataframe

我正在尝试使用索引作为参考将一列数据从一个数据帧复制到另一个数据帧。复制列时,我想用NaN填充两个数据框中未出现的所有条目。

例如,我有这两个虚拟df:

df1 = 
       col_1  col_2  col_3  col_4
index
A          1      4      7     10
B          2      5      8     11
C          3      6      9     12
df2 = 
       col_5  col_6
index
A         13     15
C         14     16

我想基于共享索引将col_5复制到df1,所以df1看起来像:

df1 = 
       col_1  col_2  col_3  col_4  col_5
index
A          1      4      7     10   15
B          2      5      8     11   NaN
C          3      6      9     12   16

由于它们的长度不同,所以我不能简单地做df1['col_5'] = df2['col_5'],而使用df1.merge(df2, how='left')并没有取得任何成功,然后无论如何我都必须丢弃任何不需要的列。

任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

您可以执行df1.insert(df1.shape[1], "col_5", df2["col_5"],这会将col_5的{​​{1}}放在末尾(df1.shape[1]返回df1中的列数),并且索引正确匹配。 / p>

答案 1 :(得分:0)

当使用索引作为连接键并从右侧数据框中选择列时,合并功能将起作用。 merge具有在联接中使用左右索引的参数。下面的示例有效:

merged_df = df_1.merge(df_2['col_5'], left_index=True, right_index=True, how='left')