用凌乱的数据替换列中的某些值

时间:2020-07-08 18:45:43

标签: python pandas

我有一个很长的数据集,存储为一个数据框。我正在查看的列称为“国家”。此专栏包含许多国家。问题是我想将各种值更改为“ USA”。 我试图改变的价值观是 我们 美国 美国 等等 我经历了太多的变化和错别字(超过100个)。有没有更简单的方法来更改这些值?由于数据集中还有其他国家/地区,因此我不能仅将所有值更改为美国

1 个答案:

答案 0 :(得分:1)

您可以做的一件事就是坚持每个单词的第一个字母。对于所有实例,第一个字母为U,对于第二部分(如果拆分整个字符串)为S。在这里,我使用的是正则表达式包,该包通常在您处理文本时使用。

Import re   
Split_parts = [re.split(r'[^A-Z,^a-z]', i) for i in df['country']]

上面的代码行根据任何非字母字符(例如,句点,逗号,分号等)分割字符串。 拆分后,您可以创建一个for循环,如果第一个字符分别为U和S,则该循环将生成TrueFalse元素。

value= []
for i in Split_parts:
    if i[0][0] in ['u','U'] and  i[1][0] in ['s','S']:
        value.append(True)
    else:
        value.append(False)

之后,您可以将字符串替换为所需的字符串(即美国):

for i in range(len(value)):
    if value[i]==True:
        df['country'][i]='USA'

世界上唯一将U和S分别作为单词首字母的国家是美国。这里的解决方案不能解决您可能遇到的所有问题。对于每个人,您都必须寻找差异