切片一个数据帧

问题描述:

考虑数据框data切片一个数据帧

    one two three four 
Ohio  2013-01-01 1  2  3 
Colorado 2014-01-05 5  6  7 
Utah  2015-05-06 9  10 11 
New York 2016-10-11 13  14 15 

我想提取仅使用标准,今年是某一年,例如,像行。但命令data['one'][:][0:4]返回

Ohio  2013-01-01 
Colorado 2014-01-05 
Utah  2015-05-06 
New York 2016-10-11 
Name: one, dtype: object 

我认为这是做,因为该命令data['one'][0][0:4]返回

'2013' 

为什么会有差别,什么是应该做的正确方法正确的事?

由于列'one'包括日期,它会是最好的有大熊猫承认它是这样的,而不是将其识别为字符串,您可以使用pd.to_datetime做到这一点:。

df['one'] = pd.to_datetime(df['one']) 

这可以让你的日期属性过滤器,而无需担心切串例如,你可以使用Series.dt.year检查年份:

df['one'].dt.year == 2013 

loc结合起来,允许你获得的所有行年份是2013:

df.loc[df['one'].dt.year == 2013, :] 

你正在寻找的条件是

df['one'].str[0:4] == "2013" 

基本上,你需要告诉熊猫阅读你列一个字符串,然后从该列中的字符串操作。

你把它写(df['one'][:])的样子,说:“给我叫列‘一’,然后给我的人[:]的。

+0

他希望整排的我相信 –

query工作进行的很顺利上datetime列

In [13]: df.query('one == 2013') 
Out[13]: 
      one two three four 
Ohio 2013-01-01 1  2  3