我正在开发一个项目,该项目涉及基于 csv 文件的一些变量/参数创建输出,我正在寻找处理它的最佳方法。
我有一个中等大小的 csv 文件,如下所示:
输入.csv
B|Person1|3000
A|Person2|3000
C|Person3|5400
A|Person4|1700
C|Person5|9400
D|Person6|2400
B|Person7|2000
A|Person8|3400
A|Person9|1000
A|Person10|2500
A|Person11|3000
我希望输出看起来像:
输出.csv
A|Person2|3000
A|Person4|1700
B|Person1|3000
B|Person7|2000
C|Person3|5400
D|Person6|2400
但是输出只能是 6 人(AABBCD)并且第 3 列的总和 <= 18000。我希望从input.csv的第一行向下创建输出:
- 如果 row(s) 为空,则根据字母 AD (Column1) 填写人,[可选]忽略第 3 列的总和。
- 如果行不为空且第 3 列的总和低于 1800 - 跳过(继续)。
- 如果行不为空且第 3 列的总和超过 1800,则替换最高值(继续)。
- [可选]完成后,重新开始该过程,检查是否可以用更高的值替换任何人;本质上是创建一个 18000 人以下最有价值的人的名单。
注意:所有 6 个参数必须根据它们的第 1 列位置填写。
起初我想生成一个output.csv文件,其中第一列包含 AABBCD 并使用 awk 匹配和条件语句添加行。然后我开始研究使用 awk 数组(将 3 列传递给 3 个数组并根据索引分配值)...
但是现在,似乎 python 可能是处理 csv 文件时要走的路,但在使用 python 编写脚本时,我仍然是新手;您能否推荐适当的路径来产生所需的输出?
非常感谢,这一直让我发疯。
编辑:简而言之 - 仅匹配前 6 名(AABBCD:具有 2As、2Bs、1C、1D)并且第 3 列的最终总和 <= 18000 美元。