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

时间:2017-07-11 15:40:06

标签: python pandas

我有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

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

4 个答案:

答案 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]