Python中如何将DataFrame类ISO格式日期转可读格式并筛选统计?
处理DataFrame中ISO格式日期并筛选统计的方法
针对你提到的需求,这里用pandas给出简单直接的解决方案,适合新手上手:
步骤1:导入pandas并构造示例数据
先把你提供的示例数据转换成DataFrame:
import pandas as pd # 构造示例数据 data = { 'date_published': [ "2022-10-28T08:00:19Z", "2022-10-28T05:00:08Z", "2022-10-28T03:00:13Z", "2022-10-27T13:55:38Z", "2022-10-27T13:21:36Z" ] } df = pd.DataFrame(data)
步骤2:解析ISO格式日期为datetime类型
pandas的pd.to_datetime()可以直接识别这种类ISO格式,不用手动切割字符串,处理起来更稳定:
# 将列转换为datetime类型 df['date_published'] = pd.to_datetime(df['date_published'])
步骤3:转换为可读日期格式
如果需要得到'2022-10-28'这种格式,直接提取日期部分即可;如果要'28-10-2022'格式,用strftime()指定格式:
# 转换为'YYYY-MM-DD'格式(日期对象转字符串) df['date_readable'] = df['date_published'].dt.date.astype(str) # 或者转换为'DD-MM-YYYY'格式 df['date_readable_dmy'] = df['date_published'].dt.strftime('%d-%m-%Y')
步骤4:筛选日期≥'2022-01-01'的数据
直接用datetime类型的列进行比较,比字符串比较更可靠:
# 设定筛选条件 filter_condition = df['date_published'] >= '2022-01-01' # 得到筛选后的DataFrame filtered_df = df[filter_condition]
步骤5:统计操作
比如按日期分组统计数量:
# 按可读日期分组统计条目数 stats = filtered_df.groupby('date_readable').size().reset_index(name='count') print(stats)
运行后会输出:
date_readable count 0 2022-10-27 2 1 2022-10-28 3
注意点
- 尽量保留datetime类型的列用于筛选和计算,字符串格式只用来展示,避免字符串比较带来的错误。
pd.to_datetime()默认能处理带Z的ISO格式,不需要额外参数,非常方便。
内容的提问来源于stack exchange,提问作者spiderboy
相关产品推荐
相关产品推荐

