gpt4 book ai didi

python - 删除列值与单独文件列表中的值匹配的行的最简单方法?

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:59 25 4
gpt4 key购买 nike

我有两个文件,file1 是一个包含数百行和 12 列的 csv,file2 是一个包含数百个值的列表。

将 file1, col(0) 中的每个值与文件 2 中的每个值进行比较,然后在与 file2 中的任何值匹配时删除 file1 行的最简单方法是什么?

我尝试使用此代码来执行匹配部分,但出现语法错误,我认为是因为 python 不允许两个并发读取器:

initialAvail = open('py_all1.csv')
Reader1 = csv.reader(initialAvail)
data_list1 = list(csv.reader(initialAvail))
IpodPLexcl = open('ipod_py.csv', 'a')
Reader2 = csv.reader(IpodPLexcl)
data_list2 = list(csv.reader(IpodPLexcl))

for i in range(1, len(data_list1)):
Reader1item = int(data_list1[i][0])
for j in range(1, len(data_list2)):
Reader2item = int(data_list2[i][0])
if Reader1item == Reader2item:
compareMatch = True
print(compareMatch)

我必须做一本字典吗(因为第二个文件只是一个列表,而不是具有多个列的 csv)?

最佳答案

如果您愿意使用 pandas 库,只需一个简单的代码即可获得所需的结果:

假设:py_all1.csv 是我们要从中删除行的文件。

import pandas as pd

df1 = pd.read_csv('py_all1.csv') # file with multiple columns
df2 = pd.read_csv('ipod_py.csv') # file with one column

mask = df1.iloc[:,0].isin(df2.iloc[:,0])
df1[~mask].to_csv('output.csv', index=False)
# change output.csv to 'py_all1.csv' if desired output

我用这个示例数据尝试过:

file1_data = '''\
A,B
New York,1
Paris,2
London,3
'''

file2_data= '''\
A
New York
Paris'''

with open('py_all1.csv','w') as f1, open('ipod_py.csv','w') as f2:
f1.write(file1_data)
f2.write(file2_data)

结果是:

A,B
London,3

关于python - 删除列值与单独文件列表中的值匹配的行的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com