无法理解 pandas.read_csv 中日期解析时出现错误的原因

Can't uderstand the reason appearing errors while date parse in pandas.read_csv

我正在学习Python。 下一个代码:

dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
df_f = pd.read_csv("files/all.csv", header=1, names=["user_id", "name", "screen_name", "description",
                                            "verified", "location", "lat", "lon", "country",
                                            "created_at", "followers_count", "friends_count",
                                            "statuses_count", "favourites_count", "listed_count", "class"],
                                            parse_dates=["created_at"], date_parser=dateparse)

显示下一个错误: (经过很长的stack trace,下一个结束)

C:\Anaconda\lib\site-packages\pandas\io\parsers.pyc in _should_parse_dates(self, i)
    786             return self.parse_dates
    787         else:
--> 788             name = self.index_names[i]
    789             j = self.index_col[i]
    790 

TypeError: 'NoneType' object has no attribute '__getitem__'

我的数据样本

我不知道如何处理它。 提前谢谢你。

这可以根据您提供给我们的示例构建数据框:

df_f = pd.read_csv('my_out1.csv')

您拥有的大部分参数都不是必需的。 Pandas,至少对我 (0.15.2) 来说,在您的样本数据中解释日期没有问题,而您的函数实际上由于 +XX:XX 部分而在其中一些失败。

以下对我来说适用于你的数据:

df_f = pd.read_csv("my_out1.csv", parse_dates=['created_at'])

这将使您可以使用日期执行预期的操作,例如:

df_f[(df_f.created_at>'2011-01') & (df_f.created_at<'2012-01')]

另请注意,您的 header 参数也是错误的:header 是 zero-indexed,因此如果您将它用于数据,则应为 0。

此外,您似乎正在使用 iPython 笔记本,并且您的示例数据似乎是 utf-8 字符。您需要 运行 以下内容以确保可以显示您的数据:

import sys
sys.setdefaultencoding("utf-8")