如何在 Pandas Pivot Table 中获取交替值列?
How to get alternating value colums in a Pandas Pivot Table?
我想从使用交替值列而不是交替主列的 Pandas DataFrame 生成报告。例如,给定此代码:
import pandas as pd
data = [('a1', 'b1', 1, 2),
('a1', 'b2', 3, 4),
('a1', 'b3', 5, 6),
('a2', 'b1', 7, 8),
('a2', 'b2', 9, 10),
('a2', 'b3', 11, 12)]
df = pd.DataFrame(data, columns=['A', 'B', 'X', 'Y'])
print(pd.pivot_table(df, index='A', columns=['B']))
我得到这个输出:
X Y
B b1 b2 b3 b1 b2 b3
A
a1 1 3 5 2 4 6
a2 7 9 11 8 10 12
但是,我更喜欢这样的东西:
B b1 b2 b3
X Y X Y X Y
A
a1 1 2 3 4 5 6
a2 7 8 9 10 11 12
有什么合理的方法可以做到这一点?
要做的第一件事是交换 MultiIndex 数据框上的级别。那你就得排序了。
In [1]: pd.pivot_table(df, index='A', columns=['B']).swaplevel(axis=1).sort_index(axis=1)
Out[1]:
B b1 b2 b3
X Y X Y X Y
A
a1 1 2 3 4 5 6
a2 7 8 9 10 11 12
我想从使用交替值列而不是交替主列的 Pandas DataFrame 生成报告。例如,给定此代码:
import pandas as pd
data = [('a1', 'b1', 1, 2),
('a1', 'b2', 3, 4),
('a1', 'b3', 5, 6),
('a2', 'b1', 7, 8),
('a2', 'b2', 9, 10),
('a2', 'b3', 11, 12)]
df = pd.DataFrame(data, columns=['A', 'B', 'X', 'Y'])
print(pd.pivot_table(df, index='A', columns=['B']))
我得到这个输出:
X Y
B b1 b2 b3 b1 b2 b3
A
a1 1 3 5 2 4 6
a2 7 9 11 8 10 12
但是,我更喜欢这样的东西:
B b1 b2 b3
X Y X Y X Y
A
a1 1 2 3 4 5 6
a2 7 8 9 10 11 12
有什么合理的方法可以做到这一点?
要做的第一件事是交换 MultiIndex 数据框上的级别。那你就得排序了。
In [1]: pd.pivot_table(df, index='A', columns=['B']).swaplevel(axis=1).sort_index(axis=1)
Out[1]:
B b1 b2 b3
X Y X Y X Y
A
a1 1 2 3 4 5 6
a2 7 8 9 10 11 12