Python 如何过滤数据帧列中的时间以输出行并计算另一行上的不同值?
我有一个数据框,有两列,时间和状态。 为了创建时间,我拆分了一个日期和时间列以创建一个新列,如下所示。 新的时间列以HH:MM:SS格式记录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
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如果你能发布一些示例数据,我们可能会提供更多帮助。