У меня есть следующий фреймворк данных, который сначала группируется в соответствии с циклом счета-фактуры, а затем добавляется к количеству клиник в каждом цикле счетов-фактур.
Dataframe после функции groupby
Я использовал следующий код для добавления столбца count:
df5 = df4.groupby(['Invoice Cycle', 'Clinic']).size().reset_index(name='counts')
а затем этот код, чтобы установить индекс и получить dataframe, как видно на изображении выше:
df5 = df5.set_index(['Invoice Cycle','Clinic'])
Теперь я хочу изменить порядок столбца Цикл счета-фактуры, чтобы даты были в порядке с 16-Dec, 17-Jan, 17-Feb, 17-Mar и т.д.
Затем я хочу переупорядочить клиники в каждом цикле счетов, поэтому клиника с самым высоким счетом находится на вершине, а клиника с самым низким счетом находится внизу.
Учитывая значения в Цикле счета-фактуры - это строки, а не временные метки, я не могу выполнять обе указанные выше задачи.
Есть ли способ изменить порядок данных?
Вы можете создать функцию для преобразования строки даты в формат даты и времени:
import pandas as pd
import datetime
def str_to_date(string):
# This will get you the date with the first day of the month (ex. 01-Jan-2017)
date = datetime.datetime.strptime(string, '%y-%b')
return date
df['Invoice Cycle'] = df['Invoice Cycle'].apply(str_to_date)
# now you an sort correctly
df = df.sort_values(['Invoice Cycle', 'counts'])