【发布时间】:2015-12-12 15:50:41
【问题描述】:
我有 4 个名为 PV.csv、Dwel.csv、Sess.csv 和 Elap.csv 的 csv 文件。我在每个文件中有 15 列和大约 2000 行。首先,我想在每个文件中添加一个名为 Var 的新列,并用相同的文件名填充新列的单元格。因此,PV.csv 文件中的新列“Var”将被 PV 填充。其他 3 个文件也是如此。 之后,我想按如下方式操作所有文件。
最后我想根据 A_ID 和 B_ID 合并/加入这 4 个文件,并将记录写入一个新的 csv 文件名 finalFile.csv。 任何建议和帮助表示赞赏。
<p>PV.csv is as follows:</p>
A_ID B_ID LO UP LO UP
103 321 0 402
103 503 192 225 433 608
106 264 104 258 334 408
107 197 6 32 113 258
Dwell.csv如下:
A_ID B_ID LO UP LO UP
103 321 40 250 517 780
103 503 80 125 435 585
106 264 192 525 682
107 197 324 492 542 614
Session.csv如下:
A_ID B_ID LO UP LO UP
103 321 75 350 370 850
106 264 92 225 482 608
107 197 24 92 142
Elapsed.csv如下:
A_ID B_ID LO UP LO UP
103 321 5 35 75
103 503 100 225 333 408
106 264 102 325 582
107 197 24 92 142 214
PV.csv 的第一个输出文件如下:
以同样的方式,其余三个文件将被新列填充,其中包含 ehrer 文件名、Dwell、Session 和 Elapsed:
A_ID B_ID Var LO UP LO UP
103 321 PV 0 402
103 503 PV 192 225 433 608
106 264 PV 104 258 334 408
107 197 PV 6 32 113 258
最终输出文件如下:
finalFile.csv.
A_ID B_ID Var LO UP
103 321 PV 0 402
103 321 Dwel 40 250
103 321 Dwel 251 517
103 321 Dwel 518 780
103 321 Sess 75 350
103 321 Sess 351 370
103 321 Sess 371 850
103 321 Elap 5 35
103 321 Elap 36 75
103 503 PV 192 225
103 503 PV 226 433
103 503 PV 434 608
103 503 Dwel 80 125
103 503 Dwel 126 435
103 503 Dwel 436 585
103 503 Elap 100 225
103 503 Elap 226 333
103 503 Elap 334 408
106 264 PV 104 258
106 264 PV 259 334
106 264 PV 335 408
106 264 Dwel 192 525
106 264 Dwel 526 682
106 264 Sess 92 225
106 264 Sess 226 482
106 264 Sess 483 608
106 264 Elap 102 325
106 264 Elap 326 582
107 197 PV 6 32
107 192 PV 33 113
107 192 PV 114 258
107 192 Dwel 324 492
107 192 Dwel 493 542
107 192 Dwel 543 614
107 192 Sess 24 92
107 192 Sess 93 142
107 192 Elap 24 92
107 192 Elap 93 142
107 192 Elap 143 214
【问题讨论】:
-
在文本中你说你有 15 个列,输入文件有 6 个,结果是 4 个。很抱歉,我不明白你真正想要做什么,以及为什么用 DictReader 阅读,添加每行一个键值并写回是不够的。
-
谢谢。我不能在此处包含所有列。输入文件有更多列与 LO, UP, LO, UP..... 结果文件必须只有 4 列如上。
-
您应该至少显示一个输入行,以便我们了解如何将其拆分为多行,或者是否只保留第一个 LO UP 字段。
-
你的努力在哪里?阅读
csv模块的文档并尝试实现它。询问,如果您遇到困难,Google 不会提供帮助。 -
@Serge Ballesta,谢谢。每个 csv 文件包含一条记录/行包含一个或多个 LO、UP 值。但在最终文件中,我想使用一个 LO、UP 和其余的 LO UP 值将添加到下一行及其 A_ID 和 B_ID。就像,PV.csv 的第一行是这样写的,因为它只有一个 LO 和 UP。但是 PV.csv 的第二行被分成 3 行。您可以在 finalFile.csv 的第 10 行到第 13 行看到它。另外,使用2nd LO时,该值应该是之前的UP+1。