Ошибка при использовании Pandas для чтения дат из файла Excel и их сортировки - PullRequest
0 голосов
/ 12 февраля 2020

Я читаю файл Excel с Pandas, содержащий Title и Date столбцы. Когда я вручную настраиваю тестовую версию, например, такую:

import pandas as pd

df = pd.DataFrame(data={'Title': ['Movie1', 'Movie2', 'Movie3', 'Movie4'],
                    'Date': ['1991-11', '1991', '1991', '1991-10-31']})
print(df)

Она печатается, как и ожидалось, и самое главное, я могу отсортировать ее именно так, как мне хотелось бы, используя print(df.sort_values('Date')), ниже вывод Я в конечном итоге пытаюсь достичь. Как вы можете видеть, есть случаи ГГГГ / ММ / ДД, ГГГГ / ММ и просто ГГГГ.

Title        Date
1  Movie2        1991
2  Movie3        1991
3  Movie4  1991-10-31
0  Movie1     1991-11

Мои проблемы возникают, когда я пытаюсь запустить print(df.sort_values('Date')) с реальным файлом Excel, который я читаю , используя read_excel. Я получаю TypeError: '<' not supported between instances of 'int' and 'str'

Я сузил это до того, как я ввожу даты ГГГГ-ММ и ГГГГ-ММ-ДД в файл Excel. Если я запускаю его только с датами ГГГГ, он сортируется правильно. Чтобы правильно отображать даты ГГГГ-ММ и ГГГГ-ММ-ДД, в файле Excel я должен предварительно установить обратную галочку к ним. Возможно, именно это и является причиной проблемы.

Надеюсь, кто-то еще сталкивался с этим раньше. Есть ли способ правильно прочитать эти даты с ведущими обратными галочками, используя Pandas?

Или есть ли лучший способ ввести даты в файл Excel для использования с Pandas? (Это может быть как вопрос Excel, так и вопрос Pandas).

1 Ответ

1 голос
/ 12 февраля 2020

Чтобы исправить ошибку типа, вы можете преобразовать значения в столбце «Дата» в строки. Это обеспечит синтаксический анализ дат в виде строк.

df['Date'] = df['Date'].astype('str')
df['pdDate'] = pd.to_datetime(df['Date'])
df.sort_values('pdDate')

Затем создайте новый столбец, преобразуйте даты в datetime и отсортируйте значения. Столбец «Дата» сохранит те же форматы, что и в Excel, и даты будут отсортированы правильно. Если вы сортируете их как строки, могут быть ошибки, но они все равно могут быть отсортированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...