使用 pandas 索引 csv 文件中的日期时间列
Posted
技术标签:
【中文标题】使用 pandas 索引 csv 文件中的日期时间列【英文标题】:Indexing the datetime column in the csv file using pandas 【发布时间】:2012-10-16 08:54:21 【问题描述】:我想使用 pandas 对 csv 文件中包含日期时间类型的列进行切片。
提前致谢。
例如:data.csv
Country,Player,Runs,ScoreRate,MatchDate,Weekday
Afghanistan,Mohammad Shahzad,118,97.52,16-02-2010,Tue
india,schin,112,98.02,16-03-2010,wed
我想对包含日期时间格式的列进行切片。
【问题讨论】:
@bmu data.dtypes[data.dtypes == pandas.datetime].index 但它列出了所有列。如果你对浮点数或字符串尝试相同的方法,它会返回所需的浮点数或字符串列 那么你应该在你的问题中发布这个(你可以编辑它)。如果您也可以提供一些示例数据,那将会很有帮助。 【参考方案1】:如果我正确理解您的问题,您可以这样做:
from pandas import *
读入数据,按MatchDate索引:
frame=read_csv("dates.csv", parse_dates = True, index_col = 4)
print frame
Country Player Runs ScoreRate Weekday
MatchDate
2010-02-16 Afghanistan Mohammad Shahzad 118 97.52 Tue
2010-03-16 india schin 112 98.02 wed
定义两个日期时间对象来定义你想要切片的范围:
x=datetime(2010, 1, 5)
y=datetime(2010, 2, 25)
并对其进行切片(获取所有在x
和y
之间具有MatchDate
的行):
print frame.ix[x:y]
Country Player Runs ScoreRate Weekday
MatchDate
2010-02-16 Afghanistan Mohammad Shahzad 118 97.52 Tue
如果你只想得到某个月份或年份,你可以这样做:
frame.ix['2010-2']
Country Player Runs ScoreRate Weekday
MatchDate
2010-02-16 Afghanistan Mohammad Shahzad 118 97.52 Tue
【讨论】:
谢谢,这很有帮助但是,如果我们不知道第 4 列包含日期时间值怎么办。我想从 csv 中分割日期时间类型列。 我不确定我是否理解。您的意思是,您只想读取具有特定日期时间值的行吗?为此,您仍然需要知道哪一列包含数据时间对象。【参考方案2】:我打算在文件阅读器中添加一个usecols
选项,以读取各个列。可能适用于 pandas 0.10(本月晚些时候)
【讨论】:
以上是关于使用 pandas 索引 csv 文件中的日期时间列的主要内容,如果未能解决你的问题,请参考以下文章
如何从导入的 csv 文件中索引日期时间列 - pandas
Python pandas - 将具有多个日期索引的csv合并到单个日期索引