import pandas as pd # import datetime # now = datetime.datetime.now().strftime('%Y%m%d') # 获取当前日期,格式为年月日 data = pd.read_excel(r'E:\每日数据\MISPOS明细.xlsx',dtype={'商户编号':str,'终端编号':str, '处理情况': str}) rows = data.shape[0] # 获取行数 shape[1]获取列数 department_list = [] for i in range(rows): temp = data["省份"][i] if temp not in department_list: department_list.append(temp) # 将省份的分类存在一个列表中 for department in department_list: new_df = pd.DataFrame() for i in range(0, rows): if data["省份"][i] == department: new_df = pd.concat([new_df, data.iloc[[i], :]], axis=0, ignore_index=True) # 上面的循环效率太低了,这么做太蠢了,其实可以用pandas的条件筛选 new_df = data[(data["省份"] == department) & (data["处理情况"] == "未处理")] # 如果多条件筛选,new_df = data[(data["省份"] == department)&()&()] 括号里写条件用 & 连起来 new_df.to_excel(str(department) +"旧机具未处理明细" + ".xlsx", sheet_name=department, index=False)
时间: 2024-04-26 07:26:32 浏览: 10
这段代码使用了Python的pandas库来读取一个Excel文件,然后根据文件中的省份进行分类,将每个省份的数据保存到一个新的Excel文件中。具体来说,它首先创建了一个空列表`department_list`,用于存储所有不重复的省份名称。然后,它遍历数据中的每一行,将省份名称添加到`department_list`中。接下来,它遍历`department_list`中的每一个省份,使用pandas的条件筛选功能来选择该省份下未处理的数据,并将这些数据保存到一个新的Excel文件中。最后,它将新文件的名称命名为该省份名称加上一些额外的字符串。
相关问题
pd.to_datetime(date).strftime("%Y%m%d")
这是一个Python pandas库中的函数,它将日期或日期字符串转换为指定格式的字符串。具体地,它将一个日期对象或日期字符串转换为年月日(%Y%m%d)的字符串格式。其中,%Y代表四位数的年份,%m代表两位数的月份,%d代表两位数的日期。例如,如果date为"2022-01-01",则该函数将返回"20220101"。
import pandas as pd import numpy as np import lyapunov import matplotlib.pyplot as plt # 读取csv文件 data = pd.read_csv('77.csv', header=None) # 将第一列设为时间戳 data[0] = pd.to_datetime(data[0], format='%Y%m%d%H%M%S') # 将第二列数据转换为numpy数组 values = np.array(data[1]) # 计算lyapunov置数 lyap = lyapunov.mLE(values, tau=1, embDim=5) # 绘图 plt.plot(lyap) plt.show()以上代码运行时报错如下ValueError: time data '1' does not match format '%Y%m%d%H%M%S' (match),改写代码解决问题
可以尝试将时间戳的格式修改为正确的格式,例如:
```
# 读取csv文件
data = pd.read_csv('77.csv', header=None)
# 将第一列设为时间戳,修改日期格式为"%Y-%m-%d %H:%M:%S"
data[0] = pd.to_datetime(data[0], format='%Y%m%d%H%M%S').apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))
# 将第二列数据转换为numpy数组
values = np.array(data[1])
# 计算lyapunov置数
lyap = lyapunov.mLE(values, tau=1, embDim=5)
# 绘图
plt.plot(lyap)
plt.show()
```
这样就可以正确读取时间戳并计算lyapunov置数了。