2017-06-20 44 views
0

我的数据是在这种形式。从哪里可以看到第三列(如果以0开始的第二列)在数值上升到下一个数量级时触及前一列。以及最后一列中来自非数据输入的文物都被记录下来。清理CSV(文物和缺乏间距)

17:10:39 2.039 26.84 4.6371E-9 -0.7$R200$O100 
17:10:41 2.082 27.04 4.6334E-9 -0.4 
17:10:43 1.980 26.97 4.6461E-9  0.3 
17:10:45 2.031 26.87 4.6502E-9  1.0$R200 
17:10:47 2.090 27.09 4.6296E-9  0.1 
... 
18:49:40 1.930226.34 2.8246E-5  7.1 
18:49:42 2.031226.04 2.8264E-5  8.2 

现在我确实手工加入了一个“|”而不是“”,并删除了少数文物,但这是一个痛苦。

因此,在将来从同一台机器获得更大数据集的前景中,有没有关于如何在python中编写脚本的任何提示,或者是否有任何基于linux的工具已经可以修复此csv /从这个新的固定csv?

+0

为什么不修复创建数据集的“东西”,以便分隔符是“”或“|”或除了“”之外的东西? – Jim

+0

不能,“东西”是一个微妙的机器,切换软件的任何硬件会带来巨大的校准成本。现在校准过程中有一个新的“东西2.0”,因为现在“东西”已经像豆一样老了,但“东西2.0”信号噪音问题现在相当困难,所以原来的“东西”修复程序将在一段时间内继续使用。 –

回答

0

在linux下壳:

cut -c 1-14 data.csv > DataA 
cut -c 15-49 data.csv > DataB 
paste DataA DataB | tr -s " " "\t" > DataC 
  1. 切割CSV分成两个部分,与所述交叉点是在它们接触,也是在我们切去加入多余的伪影的第二部分。
  2. 粘贴在一起,并更改分隔符选项卡糊的情况下,增加了一个选项卡

现在,我们会想坚持走“|”定界符下一步骤可以是

cat DataC | tr -s "\t" "|" > DataFinal 
rm DataA DataB DataC 

但这纯粹是可选的

0

你是显示不CSV(或DSV)的数据,但与固定字段宽度纯文本数据。试图将其作为csv读取会很容易出错。

代替该数据被处理为固定宽度与以下字段宽度:

8/6/6/10 (or 11)/8 (or 7)/rest of line 

请参阅有关如何在Python解析固定宽度字段this question