现在我有一个.csv文件,带有一列时间,如“20140203 00:00:03.132”,如何有效地删除秒部分(“:03.132”)?数据量巨大,我尝试使用sed预处理数据,但速度太慢了!
我现在正在尝试解析pandas中的.csv文件。无论如何我能有效地处理这个问题吗?大熊猫以外的方法也欢迎!
答案 0 :(得分:1)
有一个方便的库可用于解析时间戳:datetime:
import datetime
x = '20140203 00:00:03.132'
timestamp = datetime.datetime.strptime(x, '%Y%m%d %H:%M:%S.%f')
print datetime.datetime.strftime(timestamp, '%Y%m%d %H:%M') # 20140203 00:00
或者因为它对于大量数据来说有点慢,所以你可以从第一个:
的右边分开,然后获取结果列表的第一个元素:
print x.rsplit(':', 1)[0] # 20140203 00:00
答案 1 :(得分:1)
查看date_parser
参数pandas.read_csv()
。有些事情应该有效:
import dateutil
from pandas import read_csv
def my_date_parser(seq):
return [dateutil.parser.parse(s[:14]) for s in seq]
csv = read_csv('file.csv', parse_dates=[3], date_parser=my_date_parser)
您可能还需要提供参数parse_dates
来确定包含日期字符串的列,例如:上面将第3列指定为日期列。