2016-04-22 103 views
2

考慮數據框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' 

爲什麼會有差別,什麼是應該做的正確方法正確的事?

回答

4

由於列'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, :] 
0

你正在尋找的條件是

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

基本上,你需要告訴熊貓閱讀你列一個字符串,然後從該列中的字符串操作。

你把它寫(df['one'][:])的樣子,說:「給我叫列‘一’,然後給我的人[:]的。

+0

他希望整排的我相信 –

0

query工作進行的很順利上datetime列

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