3

我有一堆.csv这样的数据:

-959.378170,-0.000026,-94.960000,1508.000000,9.000000,
-958.978170,-0.000026,-94.920000,1508.000000,9.000000,
-958.578170,-0.000026,-94.880000,1508.000000,10.000000,
-958.178170,-0.000026,-94.840000,1508.000000,10.000000,
-957.778170,-0.000026,-94.800000,1508.000000,10.000000,

最后两列应该是时间。15是小时,08是分钟,6是秒。最终目标是加入他们,以便我得到类似的东西:

-958.978170,-0.000026,-94.920000,15:08:09,                
-958.578170,-0.000026,-94.880000,15:08:10,

我怎样才能做到这一点?

4

3 回答 3

1

使用csv模块读取.csv文件(参见此处的示例),以及datetime.strptime将两列解析为datetime对象的方法,然后您可以将其写入您想要的任何格式(使用datetime.strftime)。

有关更多详细信息,请参阅文档的这一部分。datetime

于 2012-07-31T22:53:24.547 回答
1

我会使用一个regexfileinput

import fileinput
import re

# Assume the input file is foo.csv
for line in fileinput.FileInput('foo.csv', inplace=1):
    mm = re.search(r'^(.+?,.+?,.+?,)(\d{1,2})(\d{2})\.0+,(\d{1,2})\.0+',
        line)
    g1, g2, g3, g4 = mm.group(1), int(mm.group(2)), int(mm.group(3)), int(mm.group(4))
    print "%s%02i:%02i:%02i," % (g1, g2, g3, g4)

在示例上运行它会导致...

-959.378170,-0.000026,-94.960000,15:08:09,
-958.978170,-0.000026,-94.920000,15:08:09,
-958.578170,-0.000026,-94.880000,15:08:10,
-958.178170,-0.000026,-94.840000,15:08:10,
-957.778170,-0.000026,-94.800000,15:08:10,
于 2012-08-01T01:28:54.030 回答
1

查看 pandas (http://pandas.pydata.org/pandas-docs/stable/io.html#csv-text-files) 中的 read_csv() 方法。

它有一个很棒的日期解析实用程序,允许您将多个列中的字符串放在一起。

于 2012-08-01T01:39:22.433 回答