2012-10-26 49 views
2

我想使用pandas在csv文件中对包含datetime类型的列进行分割。使用熊猫在csv文件中为datetime列编制索引

在此先感谢。

为前: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 

我想切片含日期时间格式列。

+0

你试过了什么? – bmu

+0

@bmu data.dtypes [data.dtypes == pandas.datetime] .index但列出了所有列。如果你尝试同样的方法为浮点数或字符串,它会返回所需的浮点数或字符串列 – nikhilkabbin

+2

然后你应该在你的问题中发布这个(你可以编辑它)。如果您也可以提供一些示例数据,这将有所帮助。 – bmu

回答

0

我打算添加一个usecols选项用于读取各个列的文件读取器。可能对大熊猫0.10(本月晚些时候)

4

如果我正确理解你的问题,那你怎么能做到这一点:通过MatchDate

from pandas import * 

读入的数据,索引:

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 

定义两个DateTime对象的定义范围的你想要切片:

x=datetime(2010, 1, 5) 
y=datetime(2010, 2, 25) 

切片它(得到所有行,有一个MatchDate之间xy):

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 
+0

谢谢,但有帮助但是,如果例如我们不知道列4包含日期时间值。我想从csv切片日期时间类型列。 – nikhilkabbin

+0

我不知道我明白。你的意思是,你只想读取具有特定日期时间值的行吗?要做到这一点,您仍然必须知道哪些列包含数据时间对象。 – root

+0

好吧,我想我不清楚。我有未知的数据集,其中一列包含日期,如何切片包含日期的特定列? – nikhilkabbin