Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何过滤数据帧列中的时间以输出行并计算另一行上的不同值?_Python_Pandas_Dataframe_Datetime_Logic - Fatal编程技术网

Python 如何过滤数据帧列中的时间以输出行并计算另一行上的不同值?

Python 如何过滤数据帧列中的时间以输出行并计算另一行上的不同值?,python,pandas,dataframe,datetime,logic,Python,Pandas,Dataframe,Datetime,Logic,我有一个数据框,有两列,时间和状态。 为了创建时间,我拆分了一个日期和时间列以创建一个新列,如下所示。 新的时间列以HH:MM:SS格式记录 data['time']=pd.to_datetime(data['date']).dt.time 有两种状态,转发和回复,我希望为9:00:00和13:00:00之间的值获取每个状态的len()计数。 我尝试了between_time方法,但它需要一个日期时间索引。有什么想法可以帮上忙吗 样本数据 对于这个示例,我使用了pd.DataFrame.head

我有一个数据框,有两列,时间和状态。 为了创建时间,我拆分了一个日期和时间列以创建一个新列,如下所示。 新的时间列以HH:MM:SS格式记录

data['time']=pd.to_datetime(data['date']).dt.time

有两种状态,转发回复,我希望为9:00:00和13:00:00之间的值获取每个状态的len()计数。 我尝试了between_time方法,但它需要一个日期时间索引。有什么想法可以帮上忙吗

样本数据

对于这个示例,我使用了pd.DataFrame.head()。我编辑了《泰晤士报》以便与这个问题相关

State      time
0       Reply  04:01:00
1       Reply  08:04:00
2       Forward  09:05:00
3       Forward  12:06:00
4       Reply  13:07:00
预期产出:

(9:00:00和13:00:00)

正向=800

答复=200


我根据一些评论和新的样本数据编辑了我的答案:

d = {'State':['Reply', 'Reply', 'Forward', 'Forward', 'Reply'], 'time': ['04:01:00', '08:04:00', '09:05:00', '12:06:00', '13:07:00']}
data = pd.DataFrame(data=d)

>          State      time
>     0    Reply  04:01:00
>     1    Reply  08:04:00
>     2  Forward  09:05:00
>     3  Forward  12:06:00
>     4    Reply  13:07:00
between_time
要求数据帧的索引采用正确的日期时间格式:

data.index = pd.to_datetime(data['time'])

>                            State      time
>     time                                  
>     2019-10-19 04:01:00    Reply  04:01:00
>     2019-10-19 08:04:00    Reply  08:04:00
>     2019-10-19 09:05:00  Forward  09:05:00
>     2019-10-19 12:06:00  Forward  12:06:00
>     2019-10-19 13:07:00    Reply  13:07:00
最后,您可以使用
interference\u time
功能获得您想要的:

data['State'].between_time('09:00:00', '13:00:00').value_counts()

> Forward    2

你能添加预期的输出吗?让我这样做。我最大的问题是引用时间列。我似乎找不到包含和查找时间范围的解决方法。@Biyinzika你们看了吗?当我使用“间隔时间”时,我得到了一个类型错误。(TypeError:Index必须是DatetimeIndex)@Biyinzika来自@Quant Christo评论的建议:
data['state']。在时间('9:00:00','13:00:00')之间。value_counts()
@Biyinzika如果你能发布一些示例数据,我们可能会提供更多帮助。