Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2023, 13:02   #1
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию Как сохранить изменения сделанные в dateframe pandas

Загружаю таблицу excel в df pandas, дописываю текущую дату, и нужно все вместе с изменениями сохранить в первоначальный файл excel

import pandas
# созает DateFrame
excel_data_df = pandas.read_excel('result.xlsx', sheet_name='Sheet', header=None)

list = excel_data_df.values.tolist()
excel_data_df = pd.DataFrame(list)

for row in list:
print(' '.join([str(elem) for elem in row]))


samo 2020-12-20 00:00:00 2021-01-20 00:00:00 2020-02-20 00:00:00 NaT NaT 2023-03-19 00:00:00 2023-04-03
sami 2020-12-20 00:00:00 2021-01-20 00:00:00 2020-02-20 00:00:00 NaT 2023-03-18 00:00:00 NaT 2023-04-03
sam 2020-12-20 00:00:00 2021-01-20 00:00:00 2020-02-20 00:00:00 NaT NaT NaT 2023-04-03

использую df.to_excel, но он сохраняет так как было до изменений а добавленную дату не дописывает
omelsn@mail.ru вне форума Ответить с цитированием
Старый 11.05.2023, 19:54   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

1. Код не тестил,но есть вопрос:
Код:
excel_data_df = pd.DataFrame(list)
и на эту строку не ругается?

2. Не называйте переменные именами известных функций, например, list(), max(), min(), ...
Их всё же много, но можно добавить символ нижнего подчёркивания:
Код:
list_ = [1,2,3]
max_ = max(list_)
3. Код Python требует форматирования.
Скопируйте код -> Выделите его -> Нажмите кнопку [CODE] в поле над формой ввода
и будет вам счастье.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.05.2023, 06:01   #3
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию Вот этот код работает сохраняет но без изменений

import openpyxl
import pandas as pd
from datetime import datetime



import pandas

# созает DateFrame

excel_data_df = pandas.read_excel('result.xlsx', sheet_name='Sheet', header=None)

excel_data_df.iloc[:,1:] = excel_data_df.iloc[:,1:].apply(lambda x: pd.to_datetime(x).dt.date)



list = excel_data_df.values.tolist()
excel_data_df = pd.DataFrame(list)



k = datetime.now().date()


for i in range(len(list)):
for j in range(len(list[i])):
if k not in list[i]:
list[i].append(k)




# вложенные списки по срокам
for row in list:
print(' '.join([str(elem) for elem in row]))


# excel_data_df.to_excel (r'result.xlsx', sheet_name="Sheet", index= False, header= False, )

writer = pd.ExcelWriter('result.xlsx', engine='xlsxwriter')

excel_data_df.to_excel(writer, "Sheet", index= False, header= False, )

writer.save()


НЕ ПОНИМАЮ ПОЧЕМУ НЕ СОХРАННЯЕТ ДОБАВЛЕННЫЕ В PANDAS DATEFRAME ТЕКУЩИЕ ДАТЫ
Вложения
Тип файла: xlsx result.xlsx (8.5 Кб, 2 просмотров)
omelsn@mail.ru вне форума Ответить с цитированием
Старый 12.05.2023, 09:18   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

1. Приведите код в порядок.
Как? Написал выше.

2.
Код:
import openpyxl
import pandas as pd
from datetime import datetime



import pandas  # Эта строка не нужна
Зачем дважды импортировать модуль pandas?
В коде замените pandas на pd (это псевдоним, "кликуха" модуля), и второй раз не импортируйте.

PS:
Копаться в вашем коде совсем неинтересно.
Замечу, что и не только мне
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.05.2023, 15:05   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
import pandas as pd
from datetime import datetime

excel_data_df = pd.read_excel('result.xlsx', sheet_name='Sheet', header=None)
excel_data_df.iloc[:,1:] = excel_data_df.iloc[:,1:].apply(lambda x: pd.to_datetime(x).dt.date)

list_ = excel_data_df.values.tolist()
k = datetime.now().date()

for i in range(len(list_)):
    if k not in list_[i]:
        list_[i].append(k)

excel_data_df = pd.DataFrame(list_)

# вложенные списки по срокам
for row in list_:
    print(' '.join([str(elem) for elem in row]))

excel_data_df.to_excel('result2.xlsx', sheet_name='Sheet', index=False, header=False)
Потому что датафрейм из списка нужно формировать после добавления даты, а не до.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.05.2023, 05:02   #6
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию VSCODE

ViktorR, Спасибо я еще только учусь, ваши подсказки мне помогли лучше разобраться, только вод где [CODE)
Изображения
Тип файла: jpg VSCODE.jpg (97.9 Кб, 2 просмотров)
omelsn@mail.ru вне форума Ответить с цитированием
Старый 13.05.2023, 05:04   #7
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию

BDA, Спасибо все работает как надо!
omelsn@mail.ru вне форума Ответить с цитированием
Старый 13.05.2023, 15:37   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Цитата:
только вод где [CODE)
Просто подними взгляд над полем ввода.
Там, слева направо жирный, италик, зачёркнутый, кнопки выравнивания текста и далее кнопка [CODE]
Тег коде можно написать и ручками:
/[CODE/]
import numpy as np
/[/CODE/]

Тут слэш экранирует квадратные скобки, для ясности. Эти слэши, перед скобками, не вводить.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести таблицу excel с датами без времени в pandas dateframe omelsn@mail.ru Общие вопросы по программированию, компьютерный форум 0 03.04.2023 10:55
Как сохранить сделанные тесты через страничку админа и вывести их в меню? Dmitriy332 JavaScript, Ajax 2 24.05.2021 11:11
Сохранить изменения в БД Кротяка C++ Builder 1 18.05.2013 19:56
запретить сделанные изменения npocmop Microsoft Office Word 39 22.11.2010 09:03