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