2012-07-31 99 views
3

特定的列我有一个.csv这样一组数据:使用Python修改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, 

我该怎么做?

+0

python教程是一个好的开始。然后看看csv和datetime模块。 http://docs.python.org/tutorial/ – monkut 2012-08-01 01:05:52

回答

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, 
1

使用csv模块读取.csv文件(见here的例子),以及datetime.strptime方法(使用datetime.strftime)两列解析为datetime对象,然后你就可以写出来给你想要的任何格式。

查看datetime文档的this部分了解更多详情。

1

退房的read_csv()方法,在大熊猫的例子结果运行此(HTTP://大熊猫.pydata.org /大熊猫-DOCS /稳定/ io.html#CSV文本文件)。

它有一个很棒的日期解析工具,可以让你把字符串从多个列放在一起。