замените значения ячеек каждые 8 ячеек, а затем создайте другой Excel

#python #pandas

#python #pandas

Вопрос:

Мне нужен мой код, чтобы заставить Excel отображать 3 десятичных знака в каждой 8-й строке. Фрейм данных представляет собой файл Excel с одним столбцом. Когда я запускаю свой код, python создает файл, который равен исходному, и я не знаю почему. Пожалуйста, помогите мне! Это мой код:

 import pandas as pd
import openpyxl

df=pd.read_excel("C:/Users/feder/Desktop/DATA.xlsx")
row=6

    

while IndexError==True:
    value=df.iat[row,0]
    new_value="{:.2f}".format(float(value))
    print(new_value)
    df1=df.replace(value, new_value)
    row =8


df1.to_excel("angelquirroz2.xlsx")
book= openpyxl.load_workbook("angelquirroz2.xlsx")
sheet=book["Sheet1"]
book.save("angelquirroz2.xlsx")
print("done")              
  

Комментарии:

1. Единственное отличие заключается в форматировании?

2. Не могли бы вы предоставить пример данных, чтобы мы могли понять, что вы имеете в виду?

3. да, единственное отличие заключается в форматировании. Это пример [ссылка] ( 1drv.ms/x/s !AmPP2mb64sjYgeMn4aXkaX44LzwsOg?e=31LpE2 )

Ответ №1:

теперь мне удалось написать этот цикл, но для изменения 1000 файлов требуется более 8 часов, и я не думаю, что я сделал это действительно эффективным.

 import pandas as pd
import openpyxl
import os
import xlsxwriter
from pandas import ExcelWriter
from os import path
import shutil
directory_path= r"C:Users..."
row=6
for filename in os.listdir(directory_path):
    if filename.endswith("CHANGED.xlsx"):
        continue
    if filename.endswith(".ipynb"):
        continue
    elif filename.endswith("checkpoints"):
        continue
    elif filename.endswith("spyproject"):
        continue
    else:
        workbook=openpyxl.load_workbook(filename)
        df=pd.read_excel(filename)
        lenght=len(df)
        row=6
        while row<=lenght:
            value=df.iat[row,0]      
            new_value=df.iat[row,0]="{:.3f}".format(float(value))
            row =8
        #print(new_value)
        #print("done")
            file=filename.replace(".xlsx","")
            df.to_excel("" file "CHANGED.xlsx")    
  
print ("DONE!Now let's move the files in a new directory")  

directory_output=input("insert the directory path here: ")
dst= ""r"" directory_output ""
for filename in os.listdir(directory_path):
    if filename.endswith("CHANGED.xlsx"):         
        shutil.copy(path.join(directory_path, filename), dst)
    else:
        continue
  

спасибо за помощь