如何删除或合并python中拼写错误的行?使用pandas或其他lib

2024-09-28 21:05:01 发布

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

我有5行,其中类名不同(输入错误),但包含相同的数据。 比如

> classs                                 ...                      
> Iris-setosa                   44       ...                    44
> Iris-setossa                   1       ...                     1
> Iris-versicolor               45       ...                    45
> Iris-virginica                50       ...                    50
> versicolor                     5       ...                     5

在这里,我想将Versicolor与iris Versicolor和iris setossa(extra s)合并,并将iris setosa与iris setosa合并

我尝试了.join.concat函数,它们正在将整列和行合并。作为外部联接,内部联接。但是我想把花色当作鸢尾花色,把鸢尾毛当作鸢尾毛


Tags: 数据iris错误extrajoinconcat类名setosa
2条回答

您可以使用pandas-dedupe库删除数据集中的打字错误。
示例代码

import pandas as pd
import pandas_dedupe

df = pd.DataFrame({'class': ['Iris-setosa', 'Iris-setossa', 'Iris-versicolor', 'Iris-virginica', 'versicolor', 'iris-setosa', 'versicolor']})

dd = pandas_dedupe.dedupe_dataframe(
    df, 
    field_properties = ['class'], 
    sample_size=1,
    canonicalize=True
    )

# At this point pandas dedupe will ask you to label some records as distinct or duplicates.   
# Once done, you hit finish ('f') and here is the output:

#   class      cluster id   confidence  canonical_class
# 0 iris-setosa     0      1.000000       iris-setosa
# 1 iris-setossa    0      1.000000       iris-setosa
# 2 iris-versicolor 1      0.998748       versicolor
# 3 iris-virginica  2      1.000000       iris-virginica
# 4 versicolor      1      0.999115       versicolor
# 5 iris-setosa     0      1.000000       iris-setosa
# 6 versicolor      1      0.999115       versicolor

如果您有一个干净的名称列表(即公报),您还可以尝试执行公报重复数据消除,通过将杂乱的数据与公报进行匹配来删除重复项。熊猫重复数据消除也支持地名索引重复数据消除

如果您没有太多拼写错误的行,并且这不会是一项乏味的任务,那么您可以使用str.replace手动执行:

df['class'] = df['class'].str.replace('Iris-setosa','Iris-setossa')
df['class'] = df['class'].str.replace('Iris-versicolor','versicolor')

相关问题 更多 >