python - 从另一个数据框中的列值替换 Pandas 数据框中列中的值

标签 python pandas dataframe

我有两个数据框 df1df2

s = {'id': [4735,46,2345,8768,807],'city': ['a', 'b', 'd', 'e', 'f']}
s1 = {'id': [4735],'city_in_mail': ['x']}
df1 = pd.DataFrame(s)
df2 = pd.DataFrame(s1)

df1看起来像

     id city
0  4735    a
1    46    b
2  2345    d
3  8768    e
4   807    f

df2看起来像:

     id city_in_mail
0  4735            x

我想替换列 city 的值在数据框中 df1来自 city_in_mail 列的值来自数据框 df2对于 id 所在的行值(value)是一样的。

所以我的 df1 应该变成:

     id city
0  4735    x
1    46    b
2  2345    d
3  8768    e
4   807    f 

如何用 pandas 做到这一点?

最佳答案

尝试使用 combine_firstrename 对齐列索引:

df2.set_index('id')\
   .rename(columns={'city_in_mail':'city'})\
   .combine_first(df1.set_index('id'))\
   .reset_index()

输出:

       id city
0  4735.0    x
1    46.0    b
2  2345.0    d
3  8768.0    e
4   807.0    f

注意:如果您愿意,可以将其重新分配回 df1。

关于python - 从另一个数据框中的列值替换 Pandas 数据框中列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54293715/

相关文章:

python - 在简单的 pandas 数据框上使用 tsfresh

python - 合并具有特定条件的数据帧

scala - 使用 bool 值标记 spark 数据框中的错误行

python - 假设可以用来生成特定类型的数据(即邮政编码或电话号码)吗?

python - Pandas :计算两列的不同组合并添加到同一数据框

Python 获取请求所有页面

python - 将数据框转换为包含字典列表的字典

python - 使用 noise_shape 的 Keras Dropout

python - 基于 raw_input 的 read_csv 数据框中的列位置的变量替换

r - 将字符串拆分为话语并将同一说话人的话语分配给数据帧中的列