python - 过滤 pandas 数据帧上的两列,其中一列代表电话通话时间
问题描述
我有一个熊猫数据框,如下所示:
import pandas as pd
df = pd.DataFrame({'DAY_OF_WEEK': ['Monday', 'Sunday', 'Saturday', 'Monday', 'Tuesday'],
'HOUR': ['21:02:02', '11:22:02', '23:02:02', '09:22:02', '09:02:02'],
'id': [1,2,2,3,1]})
df
我需要应用一个过滤器,一个新的数据帧只HOUR
在 19:00:00 到 07:00:00 或DAY_OF_WEEK
== 'Sunday' 之间注册。预期输出:
DAY_OF_WEEK | HOUR | ID
Monday |21:02:02 | 1
Saturday |23:02:02 | 2
Monday |09:22:02 | 3
我尝试以下:
df2 = df.loc[(pd.to_timedelta(df.HOUR).between('06:00:00','19:00:00') | df['DAY_OF_WEEK'] == 'Sunday')]
calls_night_or_sunday = df[~df2].copy()
但是,我有一个输出,所有行都收到了NaN
。任何人都可以帮忙吗?
解决方案
import pandas as pd
df = pd.DataFrame({'DAY_OF_WEEK': ['Monday', 'Sunday', 'Saturday', 'Monday', 'Tuesday'],
'HOUR': ['21:02:02', '11:22:02', '23:02:02', '09:22:02', '09:02:02'],
'id': [1,2,2,3,1]})
df2 = df[(df.HOUR.between('19:00:00','23:59:59')) | (df.HOUR.between('00:00:00','06:00:00')) | (df.DAY_OF_WEEK == 'Sunday')]
df2
# Output
# DAY_OF_WEEK HOUR id
# 0 Monday 21:02:02 1
# 1 Sunday 11:22:02 2
# 2 Saturday 23:02:02 2
更新:
时间范围已更改
推荐阅读
- css - 在 CSS calc 中引用 top 或 parent top
- php - 如果我不涉及接口或抽象类,为什么静态方法签名不兼容?
- node.js - 如何避免 mongodb 文档中的对象数组重复
- excel - 将字符串传递给用户窗体
- python - Polars python相当于R中的一瞥和总结
- python - 按数字降序对列表进行排序,如果数字相同,则在 Python 中按字母升序排序
- python - 正则表达式在以字母 S 和后续数字或字符 < 结尾的单词之间添加空格
- python - 相邻矩阵的度中心性和聚类系数
- flutter - 使用 Streambuilder 使用流的优势
- rust - 为什么调用 enumerate() 时 trait 对象不移动?