我有一个csv文件,其中有1000个条目(由选项卡分隔)。我只列出了前几个。
Unique ID Name
0 60ff3ads Keith
1 C6LSI545 Shawn
2 O87SI523 Baoru
3 OM022SSI Naomi
4 3LLS34SI Alex
5 Z7423dSI blahblah
我想从这个csv文件中删除其索引号中的部分条目并将其保存到另一个csv文件中。
我还没有开始为此编写任何代码,因为我不确定应该怎么做...请劝告。
答案 0 :(得分:1)
解决问题的单行程序:
import pandas as pd
indexes_to_drop = [1, 7, ...]
pd.read_csv('original_file.csv', sep='\t').drop(indexes_to_drop, axis=0).to_csv('new_file.csv')
检查read_csv doc以适应您特定的CSV风格(如果需要)
答案 1 :(得分:0)
示例数据建议使用制表符分隔文件。您可以使用csv.reader
打开输入文件,然后使用csv.writer
打开输出文件。但是,如果您只是使用split()
来获取第一个字段(索引)并将其与要过滤掉的索引进行比较,则会稍微简单一些。
indices_to_delete = ['0', '3', '5']
with open('input.csv') as infile, open('output.csv', 'w') as outfile:
for line in infile:
if line.split()[0] not in indices_to_delete:
outfile.write(line)
这可以简化为:
with open('c.csv') as infile, open('output.csv', 'w') as outfile:
outfile.writelines(line for line in infile
if line.split()[0] not in indices_to_delete)
在这种情况下,对于您发布的数据类型,这应该可以解决问题。如果您发现需要比较包含空格的其他字段中的值,则应考虑csv
模块。
答案 2 :(得分:-1)
我不认为可以删除线条。但是,您可以编写两个新文件。因此,请查看原始csv的每一行。接下来,对于每一行,将其保存到csv-A或csv-B。这样你就得到了两个独立的csvfiles。
此处有更多信息:How to Delete Rows CSV in python