【发布时间】:2016-01-30 19:36:00
【问题描述】:
我想用下面的代码只打印几年,但它似乎容易出错,我尝试并询问了很多次但没有得到正确的结果
import pandas as pd
from datetime import datetime
data = pd.read_csv('Meteorite_Landings.csv')
a = str(data["year"])
print a
for i, val in enumerate(a):
b=[datetime.strptime(date, '%m/%d/%Y %H:%M:%S %p').year for date in a]
print b
我收到这个错误
Traceback(最近一次调用最后一次):文件 “C:/Users/shiv/Desktop/new_date_times.py”,第 9 行,在 b=[datetime.strptime(date, '%m/%d/%Y %H:%M:%S %p').year for date in a] 文件“C:\Python27\lib_strptime.py”,行325,在_strptime (data_string, format)) ValueError: 时间数据 '0' 与格式 '%m/%d/%Y %H:%M:%S %p' 不匹配
【问题讨论】:
-
a是一个字符串。如果您对其进行迭代,您将一次获得字符。我不熟悉 pandas,但是data是什么类型?尝试直接迭代data["year"]而不将其转换为字符串。 -
在这里发布一个 csv 文件的样本将是一个巨大的帮助。同样正如@L3viathan 指出的那样,您已将
a显式转换为str,因此对其进行迭代只是一次给您一个字符以传递给strptime。 -
您还应该在此处发布 CSV 的一部分或相关部分,否则很难猜出正确的格式。
-
您还进行了两次迭代:一次使用 for 循环,一次使用列表理解。
标签: python datetime datetime-format