注册 登录
编程论坛 Python论坛

在Excel中,在每一行数据下插入3个空行。

蓝色烟雨中 发布于 2023-06-03 22:57, 806 次点击
import pandas as pd
import os

cci_path = r'D:\daimaceshi\xinceshi20230501\CCI20230501.xlsx'
save_path = r'D:\daimaceshi\xinceshi20230601'
df = pd.read_excel(cci_path, sheet_name='分析表1')
writer = pd.ExcelWriter(os.path.join(save_path, 'CCI20230601.xlsx'))
df.to_excel(writer, sheet_name='分析1', index=False)
# 新建“date3”列,复制“date”列的数据到“date3”列
df['date3'] = df['date']

# 在每一个“date”数据行后插入3个空行
for i in range(len(df)):
    for j in range(3):
        df = pd.concat([df.iloc[:i+1], pd.Series(), df.iloc[i+1:]], ignore_index=True)

        #df = pd.concat([df.iloc[:i+1], pd.Series(), df.iloc[i+1:]], ignore_index=True)
        #df = pd.concat([df, df.loc[i]], ignore_index=True)
        #inserted_rows = pd.DataFrame([{}], dtype='object')
        #cci_data = pd.concat([cci_data, inserted_rows] * 3, ignore_index=True)
        # cci_data.loc[cci_data.shape[0]] = pd.Series(dtype='object')
        # cci_data.loc[cci_data.shape[0]] = pd.Series(dtype='object')
        # cci_data.loc[cci_data.shape[0]] = pd.Series(dtype='object')
#for i in range(3):
    #new_data.loc[new_data.shape[0]] =pd.serise(dtype='object')
#cci_data = pd.concat([cci_data, new_data], axis=0, ignore_index=True)

# 将结果保存到新Excel文件中
df.to_excel(writer, sheet_name='分析1', index=False)
writer._save()
试了好几种写法,都没有办法实现“在Excel的每一行下插入3个空行”,请高手赐教。
6 回复
#2
sheeboard2023-06-04 08:34
用openpyxl,参考
程序代码:
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

wb=Workbook()
ws=wb.active
ws.append(df.columns.to_list())
for r in dataframe_to_rows(df,index=False,header=False):
    ws.append(r)
    ws.append([])
    ws.append([])
    ws.append([])

wb.save('result.xlsx')


#3
蓝色烟雨中2023-06-04 15:31
回复 2楼 sheeboard
感谢帮助!
#4
zzy9031408582023-06-04 20:48
from openpyxl import load_workbook

wb = load_workbook(filename='123.xlsx')
ws = wb.active

for i in range(1, ws.max_row*4+1, 4):
    for j in range(0, 3):
        ws.insert_rows(i+j+1)

wb.save('456.xlsx')
#5
sheeboard2023-06-05 10:20
回复 4楼 zzy903140858
insert_rows有amount参数可以设置空行数。
#6
厨师王德榜2023-06-05 14:27
用你熟悉的pandas也是可以的,代码供参考:
程序代码:
'''
在每一个“date”数据行后插入3个空行
'''
# !/usr/bin/env python
#
-*-coding:utf-8 -*-
import pandas as pd
import os

cci_path = r'D:\daimaceshi\xinceshi20230501\CCI20230501.xlsx'
save_path = r'D:\daimaceshi\xinceshi20230601'
df = pd.read_excel(cci_path, sheet_name='分析表1')

# 新建“date3”列,复制“date”列的数据到“date3”列
df['date3'] = df['date']

dfhz = pd.DataFrame(data=None, columns = df.columns)
df3 = pd.DataFrame(data=None, columns = df.columns)
for j in range(3):  # 预先建立一个3空行的DF
    df3 = df3.append(pd.Series(), ignore_index=True)

# 在每一个“date”数据行后插入3个空行
for i in range(len(df)):
    dfhz = pd.concat([dfhz, df.iloc[i:i+1] ,df3] , ignore_index=True)

# 将结果保存到新Excel文件中
writer = pd.ExcelWriter(os.path.join(save_path, 'CCI20230601.xlsx'))
dfhz.to_excel(writer, sheet_name='分析1', index=False)
writer.close()
#7
qaz1qa2023-06-07 10:14
高手!!!
1