Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2021 14:45:06

havoc_mind
Зарегистрирован: 2021-08-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Формат типа данных в столбцах

Добрый день,

В файле Excel во всех столбцах с датами есть артефакты (пробелы, “длинные” пробелы), и сам формат даты Excel не воспринимает как дату без ручного преобразования: сам файл в приложении “Python file”.

Я смог (вроде бы ) решить часть задачи: весь файл отчищается от артефактов для типа object (так Python воспринимает столбцы с датами) и конкретный столбец преобразуется в тип “дата”.

Но мне необходимо преобразовать в дату все столбцы, выбрав их по ключевому слову “Дата” (“дата”).

Помогите, пожалуйста, по следующим вопросам:
1. Можно задать эти столбцы списком? но он будет фиксированный по набору элементов…
Поэтому лучше по ключевому слову, если файл в дальнейшем будет менять формат.

2. Можно задать более короткий формат даты, чем "'datetime64'"?
Просто YYYY-MM-DD.

Буду признателен за помощь.

Мой код ниже:

import pandas as pd

import numpy as np

loan_portfel = pd.read_excel("*/Python file.xlsx",sheet_name = 'Sheet1', header=[0], skiprows = [0, 1, 2, 3, 5])

df = pd.DataFrame(loan_portfel) #, columns = ['Дата'])

#pd.set_option('display.max_rows', None, 'display.max_columns', 114)

def strip_obj(col):

if col.dtypes == object:

return (col.astype(str)

.str.strip()

.replace({'nan': np.nan}))

return col

df = df.apply(strip_obj, axis=0)

df['Дата досрочного погашения транша'] = df['Дата досрочного погашения транша'].astype('datetime64[ns]')

df.to_excel("*/output.xlsx")






Отредактировано havoc_mind (Авг. 15, 2021 22:05:02)

Прикреплённый файлы:
attachment Python file.xlsx (81,0 KБ)

Офлайн

#2 Авг. 15, 2021 16:31:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Формат типа данных в столбцах

Все советы уже написаны в http://python.su/forum/topic/40556/

havoc_mind
Можно задать эти столбцы списком?
1. Хороший эксел - мертвый эксел. :)))

т.е Если правки небольшие, то ваш подход понятен. В других случаях лучше написать импорт данных из эксела в нормальную СУБД. Это обычно элементарно делается выгрузкой в csv с последующим импортом таблицы. А потом если потребуется экспорт из базы данных в эксел. сразу уйдут все вопросы с неправильным форматом или схемой отпадут вопросы как в пандасе фильтровать по именам колонок и т.п..

2. Помещайте код в теги code иначе никто его читать не будет.


havoc_mind
Можно задать более короткий формат даты, чем "'datetime64'“?
Можно задать любой формат даты при переводе ее в строку.
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
НО!! Похоже вы или я что-то не понимаем. В exel надо пихать datetime а не строку. А способ отображения времени задается в exel а не в питоне. goto exel форум.

p.s.
я бы еще рекомендовал не пользоваться pandas. Он большой и сложный. Явно сложнее чем требуется для экспорта данных в csv



Отредактировано doza_and (Авг. 15, 2021 16:31:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version