我正在尝试将csv中的日期从字符串转换为日期时间对象。csv的格式为
date quantity
2010-01-01 10:10:10.276455 100
代码为:
df = pd.read_csv('python test.txt',delim_whitespace=True,parse_dates=['date'])
df.info()
我得到错误"NoneType"对象不可下标";。提前谢谢。
我建议将CSV标头更改为以下内容:
date time quantity
2010-01-01 10:10:10.276455 100
然后,在假设文件有3列的情况下读取文件:
df = pd.read_csv('python test.txt', delim_whitespace=True)
最后,使用字符串串联和pd.to_datetime
:生成所需的时间戳列
df['ts'] = pd.to_datetime(df['date'] + ' ' + df['time'], format='%Y-%m-%d %H:%M:%S.%f')
假设您想在多个空白上拆分(例如,而不是单个空白(,另一种方法可能是将分隔符设置为r"s{2,}"
,例如:
from io import StringIO
import pandas as pd
s = """date value
2010-01-01 10:10:10.276455 100
"""
df = pd.read_csv(StringIO(s), delimiter=r"s{2,}")
df['date'] = pd.to_datetime(df['date'])
# df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 1 entries, 0 to 0
# Data columns (total 2 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 date 1 non-null datetime64[ns]
# 1 value 1 non-null int64
# dtypes: datetime64[ns](1), int64(1)
# memory usage: 144.0 bytes