如何解决从python csv文件中删除重复项
我在python中有一个csv文件,列名是a,b,c,d,f,数据在下面
a,b,c,d,f
ab1,ef1,hi1,kl1,Y
ab2,ef2,hi2,kl2,N
ab3,ef3,kl3,Y
ab4,ef4,kl4,N
ab5,ef5,hi3,kl5,Y
ab6,ef6,hi4,kl6,N
首先,我想过滤f列为N的数据,并获取c列的唯一值,并且输出应仅包含c列数据,如下所示:
hi2
hi4
我的代码如下:
with open(input_txt) as f,open(output_txt,'w') as outfile:
reader = csv.DictReader(f,delimiter=',')
writer = csv.writer(outfile,delimiter = '|')
for row in reader:
my_row = []
if row['f'] == "N":
my_row.append(row['c'])
writer.writerow(my_row)
使用此代码,我无法消除重复并获得以下输出。
hi2
hi2
hi4
我尝试使用set方法,但是如果还有其他方法可以消除重复项,则无法获得和感谢您的帮助。
解决方法
Pandas具有直接读取csv文件的功能。您可以使用。此外,使用熊猫后,更容易完成您的工作:
import pandas as pd
df = pd.read_csv('input_file.txt')
df.loc[df.f=='N','c'].unique()
如果希望将其写入文件,则可以执行以下操作:
import pandas as pd
df = pd.read_csv('input_file.txt')
with open('output_file.txt','w') as f:
f.write('\n'.join(list(df.loc[df.f=='N','c'].unique())))
,
听起来像您需要一个名为pandas的模块。它非常流行,尤其是在数据科学和数据转换中。
import pandas as pd
df = pd.read_csv(r"inputpath.csv")
df = df[df["f"] == "N"] # filter F for N
df = df[["C"]] # might be possible with only one pair of []. Only keep column C
df = df.drop_duplicates(subset="C") # explains itself,doesn't it!
df.to_csv(r"outputpath.csv")
,
您可以在最后一步使用set
In [1]: d = {1,1,2,3,} # this a set,not a dictionary.
In [2]: d
Out[2]: {1,3}
好的,只是为了获得更多细节
In [5]: my_set = set()
In [6]: my_set.add(2)
In [7]: my_set
Out[7]: {2}
In [8]: my_set.add(3)
In [9]: my_set
Out[9]: {2,3}
In [10]: my_set.add(2)
In [11]: my_set
Out[11]: {2,3}
In [12]:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。