无法理解 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")
我正在学习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")