原数据的样子
| | |
需求
按照时间大小将所有数据重新排序
|–|–|
| | |
处理思路
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也存进去的,如果不需要可以去掉分组索引。这块没研究,有会的大佬给一下代码,谢谢♥
希望对你有所帮助♥