如何在Pandas的DateTime列中检查特定时间维度是否存在?
检查Pandas DateTime列是否包含特定时间部分(以小时为例)
如果需要判断Pandas的DateTime列是否包含小时这类时间部分,比如计算时间间隔前先确认数据是否有小时级精度,可以按以下两种场景处理:
场景1:日期列是字符串格式
直接通过字符串匹配判断是否包含时间格式(比如含冒号的小时/分钟部分):
import pandas as pd # 构建示例数据 data = { 'datetime': ['2020-01-21 17:24:00', '2020-01-22', '2020-01-23 17:28:00', '2020-01-24', '2020-01-24'] } df = pd.DataFrame(data) # 检测是否包含小时相关的时间格式 df['是否包含小时部分'] = df['datetime'].str.contains(r'\d{2}:\d{2}').map({True: '是', False: '否'})
场景2:日期列已转为datetime64类型
如果列已经是标准datetime类型,可通过检查时间部分(小时、分钟、秒)是否不全为0来判断:
import pandas as pd # 构建示例数据并转为datetime类型 data = { 'datetime': ['2020-01-21 17:24:00', '2020-01-22', '2020-01-23 17:28:00', '2020-01-24', '2020-01-24'] } df = pd.DataFrame(data) df['datetime'] = pd.to_datetime(df['datetime']) # 判断时间部分是否非零 has_time_part = (df['datetime'].dt.hour != 0) | (df['datetime'].dt.minute != 0) | (df['datetime'].dt.second != 0) df['是否包含小时部分'] = has_time_part.map({True: '是', False: '否'})
最终结果
| datetime | 是否包含小时部分 |
|---|---|
| 2020-01-21 17:24:00 | 是 |
| 2020-01-22 | 否 |
| 2020-01-23 17:28:00 | 是 |
| 2020-01-24 | 否 |
| 2020-01-24 | 否 |
如果要检查其他时间维度(比如年、月),只需调整判断逻辑即可。比如检查是否包含年份,对于datetime类型来说所有值都包含年份;如果是字符串则可匹配四位数字的年份格式。
内容的提问来源于stack exchange,提问作者Hewarathna Ashen Iranga
相关产品推荐
相关产品推荐

