0

我有一个包含网页链接的 csv 文件。我正在从每个链接收集数据并将其保存在单独的 csv 文件中。
现在,如果我必须从我离开的地方恢复文件,我必须手动删除 csv 文件中的条目,然后运行代码。
我浏览了 csv 模块的文档,但找不到任何用于此目的的函数。
我还浏览了 Stackoverflow 和其他网站上有关此问题的所有其他问题,但没有任何帮助。
有没有办法按照我想要的方式删除行?

这是我现在拥有的

import pandas as p

df = p.read_csv("All_Links.csv")

for i in df.index:
    try:
        url= df.ix[i]['MatchLink']

        #code process the data in the link

        #made sure that processing has finished
        #Now need to delete that row
4

2 回答 2

1

由于您已经将整个文件读入数据框,您可以从您离开的点开始迭代。假设你离开了i=23,你可以这样做:

import pandas as p

df = p.read_csv("All_Links.csv")

last_line_number = 23
for i in df.index[last_line_number:]:
    try:
        url= df.ix[i]['MatchLink']
        #code process the data in the link
        #made sure that processing has finished
        #Now need to delete that row

这是最简单的方法。更强大的是有 2 个文件,一个用于要处理的行,一个用于已处理的行。

于 2013-08-17T06:09:56.243 回答
1

如果要将未处理的其余数据写回 csv 文件,即仅删除已处理的数据,您只需将算法修改为:

import pandas as p

df = p.read_csv("All_Links.csv")

for i in df.index:
    try:
        url= df.ix[i]['MatchLink']
        #code process the data in the link
        #made sure that processing has finished
        df.iloc[i:].to_csv('All_links.csv', index=False)

但这会在每次迭代时写入您的文件,也许最好记住 的值i并在完成所有迭代后执行:

import pandas as p

df = p.read_csv("All_Links.csv")

i = 0
for i in df.index:
    try:
        url= df.ix[i]['MatchLink']
        #code process the data in the link
        #made sure that processing has finished
    except:
        # something broke, this row isn't processed decrease i
        i -= 1
        break

# Now write the rest of unprocessed lines to a csv file
df.iloc[i:].to_csv('All_links.csv', index=False)
于 2013-08-17T10:41:15.953 回答