Преобразование большого кадра данных - занимает слишком много времени [продублировать]

1

У меня есть датафрейм, загруженный из CSV в следующем формате:

           stock_code    price 
20180827     001          10
20180827     002          11
20180827     003          12
20180827     004          13
20180826     001          14
20180826     002          15
20180826     003          11
20180826     004          10
20180826     005          19

Я хочу преобразовать его в следующий формат:

            001     002     003     004     005
20180827    10      11      12      13      nan
20180826    14      15      11      10      19

Это моя функция (oracle_data - это исходный фрейм данных), который выполняет преобразование, но для 547500 строк данных требуется 7 минут. Есть ли способ ускорить его?

def transform_data(oracle_data):
    data_code = oracle_data[0]  
    data_date = oracle_data[1] 
    factor_date = sorted(data_date.unique()) 
    stock_list =  sorted(data_code.unique())     
    factor_data = pd.DataFrame(index = factor_date, columns = stock_list)
    sort = oracle_data.sort_index()
    for n in oracle_data.index:
        factor_data.at[oracle_data.at[n,1],oracle_data.at[n,0]]=oracle_data.at[n,2]
    return factor_data
Показать ещё 3 комментария
Теги:
pandas
dataframe

1 ответ

1
Лучший ответ

Я считаю, что здесь можно использовать pandas.pivot:

df = pd.pivot(df.index, df['stock_code'], df['price'])
  • 0
    работает отлично, большое спасибо
  • 0
    @Amoxz - Добро пожаловать! Если мой ответ был полезным, не забудьте принять его - нажмите на флажок рядом с ответом, чтобы переключить его с серого на заполненный. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню