将一个表中的子字符串替换为另一个表中整个列的字符串

2024-05-04 07:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

每当dataframedfa和dfb之间有匹配的列/键时,我就想用dataframeb中的match来更改dataframea中的国家名称

dfa数据:

国家
玻利维亚
波斯尼亚和黑塞哥维那



dfb数据:(完整正确的数据)

ISO国家 多民族玻利维亚国
波黑波斯尼亚和黑塞哥维那

首先,我尝试基于country合并dfa和dfb表,然后基于like进行字符串替换,但是由于一些未知的原因,任何带逗号的字符串仍然不匹配

    dfa.ix[dfa.Country=='Bolivia', 'Country'] = 'Bolivia, Plurinational State of'

这是因为替换发生了,但是当数据与第二个包含这个字符串的表进行比较时,它并不认为它相等,所以在合并表时不会更新null。你知道吗

   dfab_merge_null = dfab_merge.loc[dfab_merge['ISO'].isnull()] 
   dfab_merge_null.Country.unique()

数组(['亚速尔群岛','玻利维亚,多民族国家','加那利群岛', '伊朗伊斯兰共和国', “朝鲜民主主义人民共和国”、“大韩民国”, 前南斯拉夫的马其顿共和国, '密克罗尼西亚联邦','摩尔多瓦共和国', “巴勒斯坦(西岸)”“圣基茨和尼维斯”。。。等等



dfa不包含ISO列,这是我最终要添加的内容。 dfb包含ISO,我正试图将它转换为dfa,它基于两个表之间在Country中松散匹配的字符串名称。你知道吗

我不确定还有什么方法要更新。这件事我已经耽搁了一天多了,如果有人能帮我,我将不胜感激。 谢谢!你知道吗


Tags: 数据字符串名称isomerge国家countrynull
1条回答
网友
1楼 · 发布于 2024-05-04 07:11:16

如果这两个数据帧是按行排列的,或者每个数据帧都有一个索引,可以确保匹配正确的行,那么这样应该可以:

dfb.combine_first(dfa)

如果它没有排列好,意味着“玻利维亚”在dfa中被标记为第0行,“玻利维亚,多民族国家”在dfb中被标记为第11行,那么你就有了一个完全不同的问题。你知道吗

相关问题 更多 >