【问题标题】:Indexing the datetime column in the csv file using pandas使用 pandas 索引 csv 文件中的日期时间列
【发布时间】: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 但它列出了所有列。如果你对浮点数或字符串尝试相同的方法,它会返回所需的浮点数或字符串列
  • 那么你应该在你的问题中发布这个(你可以编辑它)。如果您也可以提供一些示例数据,那将会很有帮助。

标签: python pandas


【解决方案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)

并对其进行切片(获取所有在xy 之间具有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(本月晚些时候)

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2015-09-28
    • 2013-07-27
    • 2017-10-18
    • 2015-02-21
    • 1970-01-01
    • 2020-01-02
    • 2016-12-15
    相关资源
    最近更新 更多