Python Pandas读取Excel表格中数据并根据时间字段筛选数据
🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- Python Pandas读取Excel表格中数据并根据时间字段筛选数据
- 1. 需求描述
- 2. 读取excel表格
- 3. 筛选最新时间
- 4. 筛选具体月份数据
- 5.输出结果
- 6. 完整代码
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。
Python Pandas读取Excel表格中数据并根据时间字段筛选数据
1. 需求描述
现在有一个excel表格,其中包含设备字段device_id、最后使用时间字段end_time以及其他字段若干
需要将表格中的每个设备对应的最新的使用时间筛选出来,并在结果中根据最新时间筛选出4月和5月
对应的设备号列表
2. 读取excel表格
import pandas as pd# 读取 Excel 文件
file_path = r"C:\Users\Downloads\file_record.xlsx" # 替换为你的文件路径
df = pd.read_excel(file_path)
# 显示前几行数据
# print(df.head())
# print(df)
3. 筛选最新时间
先根据时间重置DataFrame对象
# Assuming 'df' is your DataFrame and 'end_time' is initially in string format
df['end_time'] = pd.to_datetime(df['end_time']) # Convert to datetime if necessary
然后根据设备号分组,再取end_time中最新即最大时间值,并重置索引
# Group by 'device_id' and find the max (latest) 'end_time' for each group
latest_end_times = df.groupby('device_id')['end_time'].max().reset_index()
4. 筛选具体月份数据
在上面的最新时间中筛选出4月和5月的设备列表
# Filter the 'latest_end_times' DataFrame to only include devices with 'end_time' in April or May
filtered_devices = latest_end_times[(latest_end_times['end_time'].dt.month == 4) | (latest_end_times['end_time'].dt.month == 5)
]
5.输出结果
遍历结果中设备和时间信息
for index, row in filtered_devices.iterrows():device_id = row['device_id']latest_end_time = row['end_time']print(f"Device ID: {device_id}, Latest End Time: {latest_end_time}")# 'filtered_devices' now contains the device information for which the latest 'end_time' is in April or May
6. 完整代码
完整代码如下
import pandas as pd# 读取 Excel 文件
file_path = r"C:\Users\Downloads\file_record.xlsx" # 替换为你的文件路径
df = pd.read_excel(file_path)# 显示前几行数据
# print(df.head())
# print(df)# Assuming 'df' is your DataFrame and 'end_time' is initially in string format
df['end_time'] = pd.to_datetime(df['end_time']) # Convert to datetime if necessary
# print(df.head())# Group by 'device_id' and find the max (latest) 'end_time' for each group
latest_end_times = df.groupby('device_id')['end_time'].max().reset_index()
# print(df)# Filter the 'latest_end_times' DataFrame to only include devices with 'end_time' in April or May
filtered_devices = latest_end_times[(latest_end_times['end_time'].dt.month == 4) | (latest_end_times['end_time'].dt.month == 5)
]for index, row in filtered_devices.iterrows():device_id = row['device_id']latest_end_time = row['end_time']print(f"Device ID: {device_id}, Latest End Time: {latest_end_time}")# 'filtered_devices' now contains the device information for which the latest 'end_time' is in April or May
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇