我正在尝试根据条件从另一个数据框填充一个数据框的列。假设我的第一个数据帧是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
答案 0 :(得分:0)
将drop_duplicates
与set_index
和combine_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']