使用熊猫或csv python从csv中删除歧义行

时间:2018-06-21 10:56:32

标签: python pandas csv python-3.5

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

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

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

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

除最后一列可能具有不同的值外,几乎所有值都相同。

1 个答案:

答案 0 :(得分:1)

您可以使用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文件没有标题,请将pd.read_csv('file.csv')替换为

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