如果列中的值重复,Python将从csv中删除重复项
我正在尝试编写csv解析器,因此如果我在“名称”列中有相同的名称,我将删除第二个名称的行。例如:如果列中的值重复,Python将从csv中删除重复项,python,csv,parsing,Python,Csv,Parsing,我正在尝试编写csv解析器,因此如果我在“名称”列中有相同的名称,我将删除第二个名称的行。例如: ['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-04-18-192446'], ['CSE_MAIN\\IT-Laptop12', 'DEREGISTERED', '2018-03-28-144236'], ['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-03-28-144236']] 我需要删除最后一行,
['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-04-18-192446'],
['CSE_MAIN\\IT-Laptop12', 'DEREGISTERED', '2018-03-28-144236'],
['CSE_MAIN\\LC-CSEWS61', 'DEREGISTERED', '2018-03-28-144236']]
我需要删除最后一行,因为它与第一行同名
我写的是:
file2 = str(sys.argv[2])
print ("The first file is:" + file2)
reader2 = csv.reader (open(file2))
with open("result2.csv",'wb') as result2:
wtr2= csv.writer( result2 )
for r in reader2:
wtr2.writerow( (r[0], r[6], r[9] ))
newreader2 = csv.reader (open("result2.csv"))
sortedlist2 = sorted(newreader2, key=lambda col: col[2] , reverse = True)
for i in range(len(sortedlist2)):
for j in range(len(sortedlist2)-1):
if (sortedlist2[i][0] == sortedlist2[j+1][0] and sortedlist2[i][1]!=sortedlist2[j+1][1]):
if(sortedlist2[i][1]>sortedlist2[j+1][1]):
del sortedlist2[i][0-2]
else:
del sortedlist2[j+1][0-2]
谢谢。试试熊猫:
import pandas as pd
df = pd.read_csv('path/name_file.csv')
df = df.drop_duplicates([0]) #0 this is columns which will compare.
df.to_csv('New_file.csv') #save to csv
此方法删除第1列中的所有重复项
如果需要简单的删除,可以使用方法drop
#You file after use pandas (print(df)):
0 1 2
0 CSE_MAIN\LC-CSEWS61 DEREGISTERED 2018-04-18-192446
1 CSE_MAIN\IT-Laptop12 DEREGISTERED 2018-03-28-144236
2 CSE_MAIN\LC-CSEWS61 DEREGISTERED 2018-03-28-144236
例如,您需要删除2行
df.drop(2,axis=0, inplace=True) #axis=0 means row, if you switch 1 this is columns.
输出:
0 1 2
0 CSE_MAIN\LC-CSEWS61 DEREGISTERED 2018-04-18-192446
1 CSE_MAIN\IT-Laptop12 DEREGISTERED 2018-03-28-144236
您正在删除列表条目(del sortedlist2[i])。这样就不会写入新文件。打印分类列表2。所以你们看到里面有什么了。谢谢你们的回复,但我的意思是,只有当有相同的名字时,我才会删除这一行。在我的示例中,pandas应该迭代抛出的名称,并且只有当存在重复的名称时,才会删除第二个MMM。。。所以就这样吧)哦)我想你需要在
df中将1改为0。删除重复项([0])
。我修好了。再试一次。