我有一个数据框df1
,其中包含日期和其他值,如下所示:
date value1 value2 value3
20100101 1 2 3
20100102 1 2 3
20100103 1 2 3
20100104 1 3 4
20100105 1 3 4
20100106 1 3 5
20100107 1 3 6
然后我想更新另一个数据帧df2
中的一些值:
date value1
20100102 2
20100104 3
20100105 4
20100106 5
20100107 6
因此预期结果将是:
date value1 value2 value3
20100101 1 2 3
20100102 2 2 3
20100103 1 2 3
20100104 3 3 4
20100105 4 3 4
20100106 5 3 5
20100107 6 3 6
据我所知,我无法使用左连接来做到这一点,除了迭代每个日期之外,是否有任何快速且简单的方法可以实现此目的?
<小时/>更新:
谢谢大家的回答!
我还有另一种情况,df2
与 df1
的日期不同,例如
date value1
20100102 2
20100104 3
20100105 4
20100106 5
20100107 6
20100108 7
将 dropna(axis=0, how='any')
添加到 piRSquared 的答案中将解决此问题。
最佳答案
选项 1
d2.set_index('date').combine_first(
d1.set_index('date')).reset_index().astype(d1.dtypes)
date value1 value2 value3
0 20100101 1 2 3
1 20100102 2 2 3
2 20100103 1 2 3
3 20100104 3 3 4
4 20100105 4 3 4
5 20100106 5 3 5
6 20100107 6 3 6
<小时/>
选项 2
d1[['date']].merge(d2, 'left').combine_first(d1).astype(d1.dtypes)
date value1 value2 value3
0 20100101 1 2 3
1 20100102 2 2 3
2 20100103 1 2 3
3 20100104 3 3 4
4 20100105 4 3 4
5 20100106 5 3 5
6 20100107 6 3 6
关于python - Pandas:更新第二个数据帧的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685589/