使用Pandas和Python编写CSV文件过滤程序

3
我目前有一个任务,需要下载CSV主文件,删除任何其中列A-列B <=0且列C等于给定的短语的行。我希望创建一个程序来:
  • 导入CSV文件
  • 删除所有列A - 列B <= 0 的行
  • 要求输入以过滤列C中的一个或多个短语
  • 将CSV导出到新文件中
到目前为止,我已经确定了使用Pandas的数据框功能是最好的方法,因为我之前已经使用它执行了其他CSV文件操作。

import pandas as pd

file = read_csv("sourcefile.csv")
file['NewColumn'] = file['A'] - file['B']
file = file[file.NewColumn > 0]
columns = ['ColumnsIWantToRemove']
file.drop(columns, inplace=True, axis=1)
phrases = input('What phrases are you filtering for? ')
file = file[file.C = phrases]
file.to_csv('export.csv')

我的问题是,如何筛选包含多个短语的C列?我想让程序接受一个或多个短语,并仅显示C列值等于其中之一的行。任何指导都将是惊人的。谢谢!

2个回答

1

我只是希望输入以逗号分隔:

phrases = phrases.split(",")
file = file[file.C.isin(phrases)]

我尝试过这个,但似乎没有进行筛选,当我导出数据文件时,它是空白的。有什么想法吗? - dner
@dner,打印语句是你的好朋友,在这里,你应该尝试在分割之前和之后打印短语,然后你可以看看是否可以在repl(例如ipython)中复制它。 - Andy Hayden

0

也许这可以帮助你:

import csv

input = open(sourcefile.csv, 'rb')
output = open(out_sourcefile, 'wb')
writer = csv.writer(output)
for row in csv.reader(input):
    if (phrases you want C column not to be,and you can add here multiple phrases):
        continue
        writer.writerow(row)
input.close()
output.close()

这似乎行不通,因为我们有数百个短语是不想保留的。 - dner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接