Я трансформирую данные панели. Мои исходные данные - df, и я хочу преобразовать их в df2. Price_1 означает цену в январе. Price_2 означает цену в феврале и т. Д. И вот мое решение, и мой результат в df3.
import numpy as np
import pandas as pd
df = pd.DataFrame({'item': ['a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c'],
'month': [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3],
'variable_name': ['price', 'price', 'price', 'quantity', 'quantity', 'quantity', 'price', 'price', 'price', 'quantity', 'quantity', 'quantity', 'price', 'price', 'price', 'quantity', 'quantity', 'quantity'],
'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ,18]
})
df2 = pd.DataFrame({'item': ['a', 'b', 'c'],
'price_1': [1, 7, 13],
'price_2': [2, 8, 14],
'price_3': [3, 9, 15],
'quantity_1': [4, 10, 16],
'quantity_2': [5, 11, 17],
'quantity_3': [6, 12, 18]
})
Мои решения:
month1 = df['month'].unique()
#date1 = pd.DatetimeIndex(date1)
#month1 = date1.month
var_name = df['variable_name'].unique()
var_name2=[]
for j in var_name:
for i in month1:
t = j + '_' + str(i)
var_name2.append(t)
x = df.value
index_name = df['item'].unique()
m = index_name.shape[0]
n = len(var_name2)
df3 = pd.DataFrame(x.values.reshape(m, n), index = index_name, columns = var_name2)
Мой вопрос: в будущем данных будет намного больше (около 2 ГБ). Поэтому мне было интересно, как эффективно преобразовать данные в python? (мое решение кажется плохим). Нет необходимости быть очень эффективным, и функция в преобладающей библиотеке является предпочтительной. Спасибо.