【发布时间】:2016-05-27 09:55:29
【问题描述】:
我有这个具有 2 级列过滤器的数据透视表。
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,喜欢实际的 csv 吗?样本格式和数据应该遵循第一个表,而第二个表应该模仿我要计算的内容
-
表格有多大,您要重新处理多少变量。
-
@rgalbo 运行每个 X 和 Y 大约 60 个变量。
标签: python python-3.x pandas pivot-table