[英]Pandas combine multiple pivot tables
Suppose I have df1
, piv1
, and, piv2
below:假设我在下面有
df1
、 piv1
和piv2
:
df1 = pd.DataFrame({'R': [1, 2], 'S': ['s1', 's2'], 'G1': ['g1a', 'g1b'], 'G2': ['g2a', 'g2b']})
df1
R S G1 G2
0 1 s1 g1a g2a
1 2 s2 g1b g2b
piv1 = df1.pivot_table(index=(['S']), columns=(['G1']), aggfunc=({'R': 'mean'}))
piv1
R
G1 g1a g1b
S
s1 1.0 NaN
s2 NaN 2.0
piv2 = df1.pivot_table(index=(['S']), columns=(['G2']), aggfunc=({'R': 'mean'}))
piv2
R
G2 g2a g2b
S
s1 1.0 NaN
s2 NaN 2.0
Instead of piv1
and piv2
, I am trying to make piv3
which would look like below.而不是
piv1
和piv2
,我正在尝试制作piv3
,如下所示。 Any ideas?有任何想法吗? Ideally I'd like to create
piv3
directly from df1
(ie not needing to create piv1
and piv2
and then combine them).理想情况下,我想直接从
df1
创建piv3
(即不需要创建piv1
和piv2
然后将它们组合起来)。
piv3
S g1a g1b g2a g2b
s1 1.0 NaN 1.0 NaN
s2 NaN 2.0 NaN 2.0
IIUC国际大学联盟
s=df1.melt(['R','S']).groupby(['S','value']).R.mean().unstack()
Out[63]:
value g1a g1b g2a g2b
S
s1 1.0 NaN 1.0 NaN
s2 NaN 2.0 NaN 2.0
df.melt
and pivot_table
: df.melt
和pivot_table
:
df1.melt(['S','R']).pivot_table(index='S',columns='value',values='R').rename_axis(None)
value g1a g1b g2a g2b
s1 1.0 NaN 1.0 NaN
s2 NaN 2.0 NaN 2.0
Probably not the most elegant answer:可能不是最优雅的答案:
piv3 = piv1.copy()
piv3[piv2.columns] = piv2
Out[17]:
R
G1 g1a g1b g2a g2b
S
s1 1.0 NaN 1.0 NaN
s2 NaN 2.0 NaN 2.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.