问题描述
我想对具有日期时间索引的数据帧执行联接/合并/追加操作.
I want to perform a join/merge/append operation on a dataframe with datetime index.
假设我有df1
,并且我想在其中添加df2
. df2
可以具有更少或更多的列以及重叠的索引.对于索引匹配的所有行,如果df2
与df1
具有相同的列,我希望df1
的值被df2
的值覆盖.
Let's say I have df1
and I want to add df2
to it. df2
can have fewer or more columns, and overlapping indexes. For all rows where the indexes match, if df2
has the same column as df1
, I want the values of df1
be overwritten with those from df2
.
如何获得所需的结果?
How can I obtain the desired result?
推荐答案
如何: df2.combine_first(df1)
?
In [33]: df2
Out[33]:
A B C D
2000-01-03 0.638998 1.277361 0.193649 0.345063
2000-01-04 -0.816756 -1.711666 -1.155077 -0.678726
2000-01-05 0.435507 -0.025162 -1.112890 0.324111
2000-01-06 -0.210756 -1.027164 0.036664 0.884715
2000-01-07 -0.821631 -0.700394 -0.706505 1.193341
2000-01-10 1.015447 -0.909930 0.027548 0.258471
2000-01-11 -0.497239 -0.979071 -0.461560 0.447598
In [34]: df1
Out[34]:
A B C
2000-01-03 2.288863 0.188175 -0.040928
2000-01-04 0.159107 -0.666861 -0.551628
2000-01-05 -0.356838 -0.231036 -1.211446
2000-01-06 -0.866475 1.113018 -0.001483
2000-01-07 0.303269 0.021034 0.471715
2000-01-10 1.149815 0.686696 -1.230991
2000-01-11 -1.296118 -0.172950 -0.603887
2000-01-12 -1.034574 -0.523238 0.626968
2000-01-13 -0.193280 1.857499 -0.046383
2000-01-14 -1.043492 -0.820525 0.868685
In [35]: df2.comb
df2.combine df2.combineAdd df2.combine_first df2.combineMult
In [35]: df2.combine_first(df1)
Out[35]:
A B C D
2000-01-03 0.638998 1.277361 0.193649 0.345063
2000-01-04 -0.816756 -1.711666 -1.155077 -0.678726
2000-01-05 0.435507 -0.025162 -1.112890 0.324111
2000-01-06 -0.210756 -1.027164 0.036664 0.884715
2000-01-07 -0.821631 -0.700394 -0.706505 1.193341
2000-01-10 1.015447 -0.909930 0.027548 0.258471
2000-01-11 -0.497239 -0.979071 -0.461560 0.447598
2000-01-12 -1.034574 -0.523238 0.626968 NaN
2000-01-13 -0.193280 1.857499 -0.046383 NaN
2000-01-14 -1.043492 -0.820525 0.868685 NaN
请注意,对于与df2
不重叠的索引,它采用df1
中的值.如果这不能完全满足您的要求,我将愿意改进此功能/为其添加选项.
Note that it takes the values from df1
for indices that do not overlap with df2
. If this doesn't do exactly what you want I would be willing to improve this function / add options to it.
这篇关于在 pandas 中加入或合并覆盖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!