【发布时间】:2018-09-13 08:50:30
【问题描述】:
尝试编写一个脚本,仅从特定目录下的 csv 文件中排除行,该目录存在于另一个 csv 文件中,并将输出重定向到另一个 csv。这有点像要应用的例外规则。
像下面的输入一样,考虑以下异常:
inDirectory/input.csv:
Id Name Location Data Services Action
10 John IN 1234 mail active
12 Samy GR 5678 phone disable
28 Doug UK 9123 phone active
excDirectory/exception.csv:
12 Samy GR 5678 phone disable
想要重定向输出如下:
outDirectory/output.csv:
Id Name Location Data Services Action
10 John IN 1234 mail active
28 Doug UK 9123 phone active
我能写如下,这是不完整的,我正在寻找一个执行相同的解决方案。任何的想法?我对 Python 脚本非常陌生。
import pandas as pd
inDir = os.listdir('csv_out_tmp')
excFile = pd.read_csv('exclude/exception.csv', sep=',', index_col=0)
for csv in inDir:
inFile = pd.read_csv('csv_out_tmp/' + csv)
diff = set(inFile)^set(excFile)
df[diff].to_csv('csv_out/' + csv, index=False)
我按照@neotrinity 编写的另一种方式代码
inDir = os.listdir('csv_out_tmp')
excFile = 'exclude/exception.csv'
for csv in inDir:
inFile = open('csv_out_tmp/' + csv)
excRow = set(open(excFile))
with open('csv_out/' + csv, 'w') as f:
for row in open(inFile):
if row not in excRow:
f.write(row)
使用上面的代码,我得到的错误如下
for row in open(inFile):
TypeError: coercing to Unicode: need string or buffer, file found
【问题讨论】:
-
例外应该是什么?
-
如果出现在 exception.csv 中的同一行或同一行,则例外。因此输出 csv 只能包含 exception.csv 中不存在的行或行。
-
我刚刚根据@Max 分享的帖子更新了脚本部分。请让我知道这是否是适当的写作方式或者我需要修改。
-
发布分享:尝试
set(InDir)^set(excFile)(对于那些不知道我分享了什么的人,因为我之前删除了它[以前从未使用过熊猫,所以认为它没有帮助])跨度>