如何使用pandas解析CSV文件?

时间:2016-02-07 00:21:15

标签: python pandas csv bigdata

现在我有一个.csv文件,带有一列时间,如“20140203 00:00:03.132”,如何有效地删除秒部分(“:03.132”)?数据量巨大,我尝试使用sed预处理数据,但速度太慢了!

我现在正在尝试解析pandas中的.csv文件。无论如何我能有效地处理这个问题吗?大熊猫以外的方法也欢迎!

2 个答案:

答案 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列指定为日期列。