我正在開發一個涉及基於csv文件的幾個變量/參數創建輸出的項目,並且正在尋找處理它的最佳方法。bash或python csv多字段處理
我有一箇中等規模的CSV文件看起來像:
input.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
想我的輸出看起來像:
output.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向下頂行創建的:
- 如果行是空的,根據字母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。
Python中一路走好!免責聲明:我喜歡Python。現在出於一個更喜歡Python的實際原因:Python代碼可以被編寫爲跨平臺的,雖然你可以在cygwin上使用bash來打算這麼做嗎? – bernie 2013-03-22 22:08:23
輸出是否必須是您指定的那6個? 2和3的意思是什麼,即你的output.csv的值超過1800,即使你說跳過1800以下的值,它的值也低於此值。最後,「替換最高值」表示將當前行添加到最佳? – 2013-03-22 22:50:03
@AndreasGS - 輸出必須是由字母col1字面關聯的組。我想你可能會錯過閱讀,我在找col3的總和等於或小於18,000(不是1800)。 #3只是想解決這個問題,如果#1填補了所有職位並且超過18,000。爲了糾正這個問題,#3將通過替換較大的整數來有選擇地降低整體總和。希望能夠清除它。我讚賞評論。 – LaidBach 2013-03-23 00:36:44