#python #excel #pandas #csv
Вопрос:
Я создал 3 функции для импорта данных из .csv
файла, а затем взял определенный столбец, чтобы затем суммировать данные внутри столбца. Я хочу экспортировать все три dataFrame
s из каждой соответствующей функции в один .xlsx
файл. Если я буду запускать функции одну за другой, они будут перекрываться, и только последняя функция будет экспортирована в .xlsx
файл. Как мне экспортировать все три функции одновременно, чтобы в .xlsx
файле были все три экспорта? P.S это моя вторая неделя python, это может быть очень любительский вопрос. Спасибо.
import pandas as pd
def file1(file_name_one):
importing = pd.read_csv(file_name_one)
df1 = pd.DataFrame(data={'Net Sales':[importing['Net Sales'].sum()]})
df1.to_excel('excelfile.xlsx',
index=False,
header=False,
startrow=5,
startcol=3,
)
def file2(file_name_two):
importing2 = pd.read_csv(file_name_two)
df2 = pd.DataFrame(data={'Net Sales':[importing2['Net Sales'].sum()]})
df2.to_excel('excelfile.xlsx',
index=False,
header=False,
startrow=6,
startcol=3,
)
def file3(file_name_three):
importing3 = pd.read_csv(file_name_three)
df3 = pd.DataFrame(data={'Amount':[importing3['Amount'].sum()]})
df3.to_excel('excelfile.xlsx',
index=False,
header=False,
startrow=7,
startcol=3,
)
print(file1(r"example1.csv"))
print(file2(r"example2.csv"))
print(file3(r"example3.csv"))
#this will result only in the export of file3(),
#the other 2 functions get "overlapped", how do I also export the other two functions?
Комментарии:
1. Что вы пробовали для себя? Переопределение базовой сигнатуры метода для включения столбца в качестве параметра может вызвать проблемы. это уже хорошее начало.
2. Сигнатура метода — это комбинация имени метода и его параметров. Поэтому перейдите к чему-то вроде «определить ваш_новой_метод (file1, file2, file3)».
3. Это как объединить 3 функции в одну функцию? не могли бы вы объяснить подробнее?
4. Это был бы способ объединить действительно. Это базовый python. Возможно, сначала просто проверьте, как работают функции ( datacamp.com/community/tutorials/functions-python-tutorial )
5. Я хорошо знаком с материалами, содержащимися в прикрепленной вами ссылке, но как я могу применить «def your_new_method (file1, file2, file3)», в мой скрипт? большое спасибо.
Ответ №1:
Исходя из того, что я понимаю, вы хотите, чтобы 3 фрейма данных были сохранены в одном файле Excel.
Проблема с вашим кодом заключается в том, что вы переписываете данные на одном листе. Вместо этого вы можете сохранить каждый фрейм данных в его выигранном листе следующим образом:
df1.to_excel('excelfile.xlsx', sheet_name='df1' ...
df1.to_excel('excelfile.xlsx', sheet_name='df1' ...
df3.to_excel('excelfile.xlsx', sheet_name='df3' ...
Ответ №2:
Итак, теоретически:
def handle_files(file_net1, file_net2, file_amount):
net1 = pd.read_csv(file_net1)
net2 = pd.read_csv(file_net2)
amount = pd.read_csv(file_amount)
df1 = pd.DataFrame(data={'Net Sales':[net1['Net Sales'].sum()]})
df2 = pd.DataFrame(data={'Net Sales':[net2['Net Sales'].sum()]})
df3 = pd.DataFrame(data={'Amount':[amount['Amount'].sum()]})
df1.to_excel('excelfile.xlsx',
sheet=NetResult1
index=False,
header=False,
startrow=7,
startcol=3,
)
df2.to_excel('excelfile.xlsx',
sheet=NetResult2
index=False,
header=False,
startrow=7,
startcol=3,
)
df3.to_excel('excelfile.xlsx',
sheet=Amount
index=False,
header=False,
startrow=7,
startcol=3,
)
Должен ли сделать трюк правильно?
Поток и вызов должны быть:
handle_files(example1.csv, example2.csv, example3.csv)
Кстати: я также включил сюда ответы @Gangula с разными листами.