【发布时间】:2017-05-25 03:20:03
【问题描述】:
我有一个这种格式的输入文件,有 5 列
输入文件:1.csv
INK137377383,3,2613,1513,899
INK133344444,3,106029,106961,12981
INK112233343,2,1775,NA,NA
INK22233333,3,1252,767,758
INK1223824,1,NA,NA,NA
我正在考虑的条件是
如果输入文件中第 2 列的值为 3 并且如果 col4,5 和 6 值小于或等于 3000 那么它应该追加 3_category到输出
如果输入文件中第 2 列的值为 3 并且如果 col4,5 和 6 值在 10000 和 15000 之间,那么它应该附加 3_1category 到输出
如果输入文件中第 2 列的值为 2 并且如果 col4,5 和 6 值小于或等于 3000 那么它应该追加 2_category 到输出
如果输入文件中第 2 列的值为 2 并且如果 col4,5 和 6 值在 10000 和 15000 之间,那么它应该附加 2_1category 到输出
如果输入文件中第 2 列的值为 1,那么它应该追加 1_category 到输出
预期输出:
INK137377383,3,2613,1513,899,3_category
INK133344444,3,106029,106961,12981,3_1category
INK112233343,2,1775,NA,NA,2_category
INK22233333,3,1252,767,758,3_category
INK1223824,1,NA,NA,NA,1_category
这是我在 python 2.7 上尝试过但无法获得预期输出的脚本
import csv
with open('1.csv') as k1, open('out.csv', 'w') as k2:
reader = csv.reader(k1)
writer = csv.writer(k2)
headers = next(reader)
headers.append('new_column')
writer.writerow(headers)
for row in reader:
new_value = compute_from_row(row)
row.append(new_value)
writer.writerow(row)
【问题讨论】:
-
考虑使用熊猫
-
实际输出与预期输出究竟有何不同?你的方法对我来说似乎很明智。你确定
compute_from_row函数工作正常吗? -
猜猜看:每个有效行之间有空行吗?
-
样本输出有什么问题?
-
短语“不起作用”是无用。
标签: python python-2.7