pandas分组排序:对excel数据按日期分组后排序

这篇博客介绍了如何使用pandas对含有日期和小时信息的数据进行排序。首先,通过读取Excel文件并将日期信息作为字符串处理。接着,将行标签的日期和小时字段分开并转换为单独的列。然后,将日期列转换为datetime类型,小时列转换为int类型。通过两次排序,先按日期再按小时,确保数据完全有序。最后,将排序后的数据存储到新的Excel文件中。这是一个关于数据处理和排序的基础教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原数据的样子

| | |原始数据

需求

按照时间大小将所有数据重新排序
|–|–|
| | |

处理思路

1.pandas读取数据文件,日期作为str格式读出
2.将【行标签】列的日期和小时信息分开成单独两列
3.按照日期将数据进行第一次排序
4.按日期分组,每个组内按小时排序
5.排序后的数据存储为新文件,结束

Code

import numpy as np
import pandas as pd

df=pd.read_excel('1.xlsx',dtype={'行标签':'str'})
print(df.info()) # 查看行标签数据类型
df1=df['行标签'].str.split() # 将行标签按照空格切分
print(df1) # 可以看到切分后成为了列表形式
# 之前split函数内有expend参数,可以直接生成两列dateframe格式数据,但这次不太行不知道是不是更新版本取消了这个函数,所以使用手动生成。
date=[]
h=[]
for i in df1:
	date.append(i[0])
	h.append(i[1])
# 切分后的数据添加到原df
df['date']=np.array(date)
df['h']=np.array(h)
# 切分后的数据是str类型,需要转成各自的格式才能按需求排序
df['h']=df['h'].astype('int32') # 原h列数据转成int
df['date']=df['date'].astype('datetime64')
print(df.info()) # 验证一下数据类型是否转成功
# 排序
df=df.sort_values('date')
df=df.groupby('date').apply(lambda x : x.sort_values("h"))
print(df) # 查看排序结果
# 保存
df.to_excel('2.xlsx') # 这个是把index也存进去的,如果不需要可以去掉分组索引。这块没研究,有会的大佬给一下代码,谢谢♥
 



希望对你有所帮助♥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值