我正在尝试使用索引作为参考将一列数据从一个数据帧复制到另一个数据帧。复制列时,我想用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')
并没有取得任何成功,然后无论如何我都必须丢弃任何不需要的列。
任何帮助表示赞赏。谢谢!
答案 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')