我有两个数据框 df1
和 df2
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_first
和 rename
对齐列索引:
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/