我有一个看起来像这样的数据框-
group outcome_30 outcome_365
307 control no event no event
141 treatment no event no event
291 control no event no event
138 treatment no event no event
320 control no event no event
189 treatment no event no event
16 treatment stroke stroke
227 control stroke stroke
10 treatment stroke stroke
257 control no event no event
我试图使用此代码创建数据透视表-
stent_pt = stent.pivot_table(index='group', values=['outcome_30','outcome_365'], aggfunc='count')
stent_pt
outcome_30 outcome_365
group
control 227 227
treatment 224 224
但这不是我想要的。我想对结果30和结果365进行计数(无事件,中风)。
这就是我希望我的结果看起来像的样子-
DataFrame.melt
通过合计函数GroupBy.size
和columns参数与透视配合使用:
df = (stent.melt('group')
.pivot_table(index='group', columns=['variable','value'], aggfunc='size'))
df.loc['Total'] = df.sum()
print (df)
variable outcome_30 outcome_365
value no event stroke no event stroke
group
control 4 1 4 1
treatment 3 2 3 2
Total 7 3 7 3
替代解决方案crosstab
:
df = stent.melt('group')
df = (pd.crosstab(df['group'],
[df['variable'], df['value']],
margins=True,
margins_name='Total')
.drop('Total', axis=1, level=0))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句