从另一个数据框填充一个数据框的列

时间:2018-06-29 08:58:39

标签: python pandas dataframe

我正在尝试根据条件从另一个数据框填充一个数据框的列。假设我的第一个数据帧是df1,第二个数据帧是df2。 df1 is described as bellow : +------+------+ | Col1 | Col2 | +------+------+ | A | 1 | | B | 2 | | C | 3 | | A | 1 | +------+------+ 和: df2 is described as bellow : +------+------+ | Col1 | Col2 | +------+------+ | A | NaN | | B | NaN | | D | NaN | +------+------+ Col1的每个不同值都有一个id号(在Col2中),所以我要在df2.Col2中填充NaN值,其中df2.Col1 == df1.Col1。 这样我的第二个数据帧将看起来像: df2 : +------+------+ | Col1 | Col2 | +------+------+ | A | 1 | | B | 2 | | D | NaN | +------+------+ 我正在使用Python 2.7

2 个答案:

答案 0 :(得分:0)

drop_duplicatesset_indexcombine_first结合使用:

df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()

如果只需要在id列中检查重复项:

df = df2.set_index('Col1').combine_first(df1.drop_duplicates().set_index('Col1')).reset_index()

答案 1 :(得分:0)

这是使用过滤器df1.Col1 == df2.Col1

的解决方案
df2['Col2'] = df1[df1.Col1 == df2.Col1]['Col2']

使用loc甚至更好(但从我的角度来看不太清楚)

df2['Col2'] = df1.loc[df1.Col1 == df2.Col2, 'Col2']