我有DataFrame
df1
:
| A | B | C | D |
-----------------
| 0 | 1 | 3 | 4 |
| 2 | 1 | 8 | 4 |
| 0 | 2 | 3 | 1 |
和DataFrame
df2
:
| A | D |
---------
| 2 | 2 |
| 3 | 2 |
| 1 | 9 |
我想将A
的{{1}}和D
列替换为df1
的等效列。
当然,我可以做一些像
这样的事情df2
但是我需要一个自动执行此操作的解决方案,因为我有数千个列。
答案 0 :(得分:6)
您可以使用combine_first
:
df2.combine_first(df1)
# A B C D
#0 2 1.0 3.0 2
#1 3 1.0 8.0 2
#2 1 2.0 3.0 9
答案 1 :(得分:4)
执行此操作的方法是使用pd.DataFrame.update
更新将使用另一个数据帧中的信息修改数据框。
\K
这样做的好处是保留了df1.update(df2)
中的dtypes
。
df1
另一种完成更新的方法是在pd.DataFrame.assign
上使用pd.DataFrame.iteritems
和字典解包。但是,如果它们存在于df1
A B C D
0 2 1 3 2
1 3 1 8 2
2 1 2 3 9
中,则会包含新的其他列。
df2
答案 2 :(得分:1)
一个简单的for循环就足够了:
for c in df2.columns:
df1[c] = df2[c]
答案 3 :(得分:0)
for col in df1.columns:
if col in df2.columns.tolist():
df1[col] = df2[col]