Python 将DataFrame的某些列替换为另一列(基于列名)

Python 将DataFrame的某些列替换为另一列(基于列名),python,pandas,Python,Pandas,我有一个DataFramedf1: | A | B | C | D | ----------------- | 0 | 1 | 3 | 4 | | 2 | 1 | 8 | 4 | | 0 | 2 | 3 | 1 | 和数据帧df2: | A | D | --------- | 2 | 2 | | 3 | 2 | | 1 | 9 | 我想用df2的等效列替换df1的A列和D列 df1.assign(**dict(df2.iteritems())) A B C D 0 2 1

我有一个
DataFrame
df1

| A | B | C | D |
-----------------
| 0 | 1 | 3 | 4 |
| 2 | 1 | 8 | 4 |
| 0 | 2 | 3 | 1 |
数据帧
df2

| A | D |
---------
| 2 | 2 |
| 3 | 2 |
| 1 | 9 |
我想用
df2
的等效列替换
df1
A列和
D列

df1.assign(**dict(df2.iteritems()))

   A  B  C  D
0  2  1  3  2
1  3  1  8  2
2  1  2  3  9
我当然可以这样做

df1['A'] = df2['A']
df1['D'] = df2['D']

但我需要一个自动执行此操作的解决方案,因为我有数千列。

一个简单的for循环就足够了:

for c in df2.columns:
    df1[c] = df2[c]
您可以使用:


方法是使用
更新将使用另一个数据帧中的信息就地修改数据帧

df1.update(df2)
这样做的好处是
df1
中的
dtypes
被保留

df1

   A  B  C  D
0  2  1  3  2
1  3  1  8  2
2  1  2  3  9

另一种在没有更新的情况下完成这项工作的方法是使用和打开字典。但是,如果在
df2
中存在新的附加列,则这将包括这些列

df1.assign(**dict(df2.iteritems()))

   A  B  C  D
0  2  1  3  2
1  3  1  8  2
2  1  2  3  9
df1.assign(**dict(df2.iteritems()))

   A  B  C  D
0  2  1  3  2
1  3  1  8  2
2  1  2  3  9