У меня есть сводная таблица с фильтром столбцов уровня 2 уровня.pandas pivot table, создавая таблицу, принимая разницу в нескольких столбцах
table_pivot = pandas.pivot_table(table_raw, values='PRICE', index=['DATE', 'HOUR'],
columns=['TYPE', 'ID'], aggfunc= numpy.mean, fill_value= 0)
выход поворота выглядит следующим образом:
TYPE type X type Y
ID X1 X2 X3 Y1 Y2 Y3 Y4
DATE HOUR
1/1/2015 1 10 20 30 20 40 60 80
1/1/2015 2 20 40 60 10 50 70 90
Теперь я пытаюсь получить разницу между типами таким образом, что предназначен вывод выглядит примерно так:
Z
Y1 - X1 Y1 - X2 Y1 - X3 Y1 - X1 Y2 - X1 ....
Date Hour
1/1/2015 1 10 20 30 40 30 ...
1/1/2015 2 -10 30 50 70 -30 ...
Я думал это было бы примерно так:
table_pivot['Z'] = table_pivot['Y'] - table['X']
Но, похоже, он не работает. Как создать новую таблицу, чтобы получить разницу между всеми возможными комбинациями X-Y?
ОБНОВЛЕНИЕ: Я пробовал следующие строки. Тем не менее, я получаю сообщение MemoryError
. Кто-нибудь знает, как я могу это исправить?
x_list = table_pivot['X'].columns.values
y_list = table_pivot['Y'].columns.values
table_diff = pandas.DataFrame()
for each_x in x_list:
for each_y in y_list:
colName = each_y + ' - ' + each_x
table_diff[colName] = table_pivot['Y'][each_y] - table_pivot['X'][each_x]
Можете добавить примеры данных? – jezrael
@jezrael, как и собственно csv? образец и данные должны следовать за первой таблицей, а вторая таблица должна имитировать то, что я пытаюсь вычислить. – sndrosilva
Насколько велика таблица и сколько переменных вы пытаетесь сделать это. – rgalbo