Python打开有数据的excel,在第一行插入列名,并把其中日期时间那一列按空格拆分成两列,并把日期那列内容是8位数字的日期,改变为日期格式,在把整个表转换成枢纽表,再计算其中两列是相减的值写在后面一列
时间: 2023-05-26 20:03:51 浏览: 113
以下是Python处理Excel的代码:
```python
import openpyxl
import pandas as pd
# 打开Excel文件
wb = openpyxl.load_workbook('data.xlsx')
# 选择第一个sheet
sheet = wb.worksheets[0]
# 在第一行插入列名
sheet.insert_rows(1)
sheet['A1'] = '日期'
sheet['B1'] = '时间'
sheet['C1'] = '数据1'
sheet['D1'] = '数据2'
# 拆分日期时间列
for row in sheet.iter_rows(min_row=2):
datetime = row[0].value.split(' ')
row[0].value = datetime[0]
row[1].value = datetime[1]
# 把日期列格式化为日期类型
for row in sheet.iter_rows(min_row=2, min_col=1, max_col=1):
cell = row[0]
if isinstance(cell.value, int):
cell.number_format = 'yyyy-mm-dd'
cell.value = pd.to_datetime(str(cell.value), format='%Y%m%d')
# 转换成枢纽表
df = pd.DataFrame(sheet.values).rename(columns={0: '日期', 1: '时间', 2: '数据1', 3: '数据2'})
pivot_table = pd.pivot_table(df, values=['数据1', '数据2'], index=['日期'], aggfunc='sum')
# 计算相减的值写在后面一列
pivot_table['数据3'] = pivot_table['数据2'] - pivot_table['数据1']
# 把枢纽表写回Excel
for r in dataframe_to_rows(pivot_table, index=True, header=True):
sheet.append(r)
# 保存Excel文件
wb.save('data_processed.xlsx')
```
阅读全文