使用 Pandas 或 csv python 从 csv 中删除不明确的行

Removing ambiguous lines from csv using Pandas or csv python

我尝试使用以下代码从行中删除重复项:

import csv

file_in = '1.csv'
file_out = 'output_file.csv'
with open(file_in, 'r',encoding="utf-16") as fin, open(file_out, 'w',encoding="utf-16") as fout:
    reader = csv.reader(fin)
    writer = csv.writer(fout)
    d = {}
    for row in reader:
        color = row[0]
        if color not in d:
            d[color] = row  
            writer.writerow(row)

这是我上面程序的输出文件:File Output
这是输入文件:File Input

但是有一个问题,我以为我会得到过滤后的值,但逻辑只删除了复制的行。查看以下结果值:

对于相同的值,我在不同的行中得到“是”和“否”。这些是不明确的值

1   0   -1  -1  -1  -1  -1  -1  yes
1   0   -1  -1  -1  -1  -1  -1  no
1   0   1   1   1   -1  -1  -1  yes
1   0   1   1   1   -1  -1  -1  no

这些是模棱两可的值,对我的神经模型没有任何影响。这些正在制造模棱两可的情况。

我愿意删除此类条目以及重复的行。我愿意使用pandas,但没有太多知识。请帮助我从 csv 中删除重复的行以及不明确的值。

除了最后一列可能有不同的值外,大多数值都相同。

您可以使用非常方便的 pandas 功能来删除重复项。假设您的 csv 文件名为 file.csv。然后您可以将数据加载到名为 df 的数据框中,并且您想要删除除最后一列之外的重复项。

import pandas as pd

df = pd.read_csv('file.csv')    
drop_cols = df.columns[:-1]
df.drop_duplicates(subset=drop_cols, inplace=True)

编辑

如果您的 csv 文件没有 headers,请将 pd.read_csv('file.csv') 替换为

pd.read_csv('file.csv', header=None)