切片一个数据帧
问题描述:
考虑数据框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'][:]
)的样子,说:“给我叫列‘一’,然后给我的人[:]
的。
答
query
工作进行的很顺利上datetime列
In [13]: df.query('one == 2013')
Out[13]:
one two three four
Ohio 2013-01-01 1 2 3
他希望整排的我相信 –