【发布时间】:2018-09-08 07:13:27
【问题描述】:
我目前正在使用 pandas 读取 csv 文件。我希望将具有类似于 datetime 的字符串的列转换为 DateTime 对象。我对我的数据库有限制,指定该列应该是这种类型。
我的 csv 文件中的示例行是:
2015-11-28 00:10:00, 99, 21
当我遇到以下问题时,我最初遇到了这个问题。
# import CSV file
df = pd.read_csv(filename, error_bad_lines=False, warn_bad_lines=False)
# TODO Save data into db
# ADD time, banana, apple
for i in df.index:
m = AggregatedMeasurement(
time=df.loc[i, 'Time UTC'],
banana=df.loc[i, 'BANANA'],
apple=df.loc[i, 'APPLE']
)
db.session.add(m) # add to db
db.session.commit() # perform them all
我收到以下错误。
StatementError: (builtins.TypeError) SQLite DateTime type only accepts Python datetime and date objects as input
我开始在这里搜索,发现可以指示date_parser并开始组合。这是我迄今为止在这个建议的帮助下所尝试的。 Can pandas automatically recognize dates
dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
# import CSV file
df = pd.read_csv(filename, error_bad_lines=False, warn_bad_lines=False, parse_dates=['datetime'],
date_parser=dateparse)
现在我收到以下错误
ValueError: 'datetime' is not in list
我执行这个错误吗?提前致谢!
更新 1
以下改动后
>dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
# import CSV file
df = pd.read_csv(filename, error_bad_lines=False,
warn_bad_lines=False,
parse_dates=['Time UTC'],
date_parser=dateparse)
我在这个特定部分得到了一个TypeError: 'NoneType' object is not subscriptabledate_parser=dateparse)
更新 2 后来,我尝试了下一个建议。
df = pd.read_csv(filename, error_bad_lines=False,
warn_bad_lines=False)
# Changing datatype
df['Time UTC'] = pd.to_datetime(df['Time UTC'])
我认为这有效 :) 我遇到了另一个错误,但这对应于我尚未设置的另一个数据库限制关系/ForeignKey。
【问题讨论】:
标签: python pandas datetime dataframe sqlalchemy