python每行输出8个输出8列_Pandas在同一输出上具有频率、行百分比和列百分比的交叉表...

考虑使用交叉表的margins,将这三个元素连接成一个df。下面用你的例子:newdf = pd.concat([pd.crosstab(df.A, df.B, margins=True),

pd.crosstab(df.A, df.B).apply(lambda r: r/r.sum(), axis=0),

pd.crosstab(df.A, df.B).apply(lambda r: r/r.sum(), axis=1)])

newdf = newdf.loc[['one','two','three','All']] # RE-ORDER INDEX VALUES

newdf = newdf[['A', 'B', 'C', 'All']] # RE-ORDER COLUMNS

newdf['All'] = np.where(pd.isnull(newdf['All']) & # ROW PERCENTAGES SUM

(newdf['A'] + newdf['B'] + newdf['C']==1),

1, newdf['All'])

print(newdf)

# A B C All

# A

# one 4.000000 4.000000 4.000000 12.0

# one 0.500000 0.500000 0.500000 NaN

# one 0.333333 0.333333 0.333333 1.0

# two 2.000000 2.000000 2.000000 6.0

# two 0.250000 0.250000 0.250000 NaN

# two 0.333333 0.333333 0.333333 1.0

# three 2.000000 2.000000 2.000000 6.0

# three 0.250000 0.250000 0.250000 NaN

# three 0.333333 0.333333 0.333333 1.0

# All 8.000000 8.000000 8.000000 24.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值