python - 如何过滤 Dataframe 列中的时间以输出行并计算另一行的不同值?
问题描述
我有一个包含两列时间和状态的数据框。为了创建时间,我拆分了一个日期和时间列以创建一个新列,如下所示。新的时间列以 HH:MM:SS 格式记录。
data['time'] = pd.to_datetime(data['date']).dt.time
有两种状态,转发和回复,我希望为每个状态获取 len() 计数,以获取 9:00:00 到 13:00:00 之间的值。我尝试了 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
最后,您可以使用该between_time
功能来获得您想要的东西:
data['State'].between_time('09:00:00', '13:00:00').value_counts()
> Forward 2
推荐阅读
- strapi - Strapi 可以安装在 Dreamhost 之类的共享服务器上吗?
- powershell - PSGSuite:按创建日期过滤 Google 帐户
- sql - 如何通过加法将值更新为相同的值?
- python - 如何将python脚本的输出保存为json而不是对象流?
- python - 创建一个 3x3 矩阵的 n 维 NumPy 数组
- primefaces - Primefaces升级期间jQuery未定义
- java - JDK 中的 StringBuilder 与 "+" >= 9
- r - R - 回归系数的显着性检验
- react-native - 无法在 React-navigation 的 useFocusEffect 内实现回调
- php - 为什么用ajax再次填充数据时dataTable的分页不起作用?