【问题标题】:Replacing certain values in a column with messy data用杂乱的数据替换列中的某些值
【发布时间】:2020-10-29 06:25:26
【问题描述】:

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

【问题讨论】:

  • 你试过用fuzzywuzzy进行模糊匹配吗?我会开始尝试将 US、USA、United States 和那些值与 USA 的地图相匹配,或者你拥有的任何 verspinn。

标签: python pandas


【解决方案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)

之后,您可以将字符串替换为您需要的字符串(即 USA):

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

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

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2018-11-13
    • 2015-07-14
    • 1970-01-01
    • 2020-01-04
    相关资源
    最近更新 更多