使用 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)
我尝试使用以下代码从行中删除重复项:
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)