繁体   English   中英

如何使用Pandas查找具有特定日期的所有行?

[英]How do I find all rows with a certain date using Pandas?

我有一个简单的Pandas DataFrame其中包含'valid_time''value' 采样的频率大致是每小时一次,但不规则且有一些大的间隙。 我希望能够有效地拉出给定日期的所有行(即在日历日内)。 我怎么能用DataFrame.where()或其他东西做到这一点?

我天真地想做这样的事情(显然不起作用):

dt = datetime.datetime(<someday>)
rows = data.where( data['valid_time'].year == dt.year and 
                    data['valid_time'].day == dt.day and 
                    data['valid_time'].month == dt.month)

上述代码至少存在一些问题。 我是熊猫的新手,所以我正在摸索一些可能很简单的东西。

对于像这样的事情,熊猫绝对是非常棒的。 我建议让您的时间字段索引可以看出这里 如果您提供有关数据框结构的更多信息,我很乐意提供更详细的说明。

然后,您可以使用df['1-12-2014']轻松获取日期中的所有行,这将从2014年1月12日起抓取所有内容。您可以使用df[1-2014]编辑它以从1月开始获取所有内容。 如果您想从一系列日期和/或时间中获取数据,您可以执行以下操作:

df['1-2014':'2-2014']

熊猫非常强大,特别是对于时间索引数据。

试试这个(就像你的想法的延续):

import pandas as pd
import numpy.random as rd
import datetime

times =  pd.date_range('2014/01/01','2014/01/6',freq='H')
values = rd.random_integers(0,10,times.size)

data = pd.DataFrame({'valid_time':times, 'values': values})
dt = datetime.datetime(2014,1,3)
rows = data['valid_time'].apply(
    lambda x: x.year == dt.year and x.month==dt.month and x.day== dt.day 
    )

print data[rows]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM