python - 如何在没有 for 循环或合并的情况下根据另一个“更正”数据帧替换一个数据帧中的字符串值
问题描述
假设我有两个 DataFrame,一个“原始”和“更正”数据框,这样
orig = pd.DataFrame({'Name':['A','B'],'Code':['9q8','7k2']})
Name Code
A 9q8
B 7k2
corr = pd.DataFrame({'Name':['A',],'Code':['9R8',]})
Name Code
A 9R8
如何在不合并或迭代 corr 中的每个更正然后在 orig 中的每个原始文件的情况下分配orig['Code']=corr['Code']
任何位置?orig['Name']==corr['Name]
最终结果应如下所示:
Name Code
A 9R8
B 7k2
我确实看到了另一个类似于我当前问题的堆栈溢出帖子,但在该示例中,答案使用了合并,然后使用了选择机制来摆脱不再需要的旧行。但是,我没有这样的选择机制。
例如,如果我合并 orig 和 corr,我得到:
out = pd.merge(orig,corr,on='Name',how='outer')
Name Code
A 9q8
A 9R8
B 7k2
哪个,如果我查看数千行,让我无法知道哪个 A 9q8
和A 9R8
哪个是替换,哪个不是。我不能使用指示符列来区分替换和非替换,因为删除所有“仅左”的条目也会删除该条目B 7k2
。
解决方案
orig.set_index('Name',inplace=True)
orig.update(corr.set_index('Name'))
orig.reset_index(inplace=True)
orig
Out[164]:
Name Code
0 A 9R8
1 B 7k2
推荐阅读
- android - 将 Firebase 集成到功能时遇到麻烦
- java - 如何从 testNG 测试计划中传递 invocationCount 的值
- ruby-on-rails - 如何在 ruby 中将新属性包含到我的 json 数组中?
- python - Python/Pandas:选择特定值并返回系列
- r - R:绘制值网格
- css - 我的图像在悬停时闪烁
- python - list() 函数混淆
- c - C语言中的Websocket实现
- c++ - 在 C++ 中,为什么只包含联合及其基类实例的派生类占用的内存比联合的大小还要多?
- java - 无法为 Spring KafkaTemplate 指定 valueSerializer 实例