#regex #pandas #dataframe #datetime
Вопрос:
У меня есть excel, где некоторые названия столбцов являются датами «ааааа-мм-jj 00:00:00». На самом деле значения в datetime.datetime(2018, 3, 26, 0, 0)
формате, я хочу получить даты только за один год до этого, и это с 2018 года по настоящее время. Поэтому я протестировал некоторые вещи, чтобы использовать регулярное выражение для импорта файла со столбцами только из » 2020-11.*».
Я собираюсь упростить проблему, предполагая, что я хочу сохранить столбцы «2020» и «2021» (или отбросить столбцы «2018» и «2019»).
Вот что я хочу сделать, это неверно синтаксически :
df = pd.read_excel(filepath, sheetname, index_col=None, usecols=['2020. ':'2021. '], na_values=['']) usecols=['2020. ':'2021. '], ^ SyntaxError: invalid syntax
Другим способом сделать это может быть использование этого типа usecols=['A:Z']
, но файл регулярно заполняется новыми данными, поэтому это было бы логически неправильно, даже для краткосрочного выбора.
Если это невозможно при импорте файла во фрейм данных. Это также возможно, если либо удалить неправильные столбцы, либо сохранить правильные.
Чтобы отбросить их, то же самое, что я интуитивно сделал бы с usecols, но в df.drop(columns=['2018. ':'2019. '])
.
Чтобы сохранить их, я подумал о том, чтобы сделать df = df[df['2020. ':'2021. ']]
Но здесь проблема в том, что строковый аргумент должен точно соответствовать имени столбца, иначе операции удаления/среза вызовут ошибку. Idem при использовании df.loc[:,['2020. ':'2021. ']]
Конечно, я буду использовать выражение времени для построения своего регулярного выражения и условия, подобные (в псевдокоде): datetime(now)-datetime(minimum accepted)lt;1 year
У кого-нибудь есть идея использовать регулярные выражения (или выражения времени) для этого ? Или другое решение, о котором я еще не думал.