为了账号安全,请及时绑定邮箱和手机立即绑定

将 2 级 multiidex 系列重新组合到数据框,以便二级索引成为名称?

将 2 级 multiidex 系列重新组合到数据框,以便二级索引成为名称?

四季花海 2021-10-26 15:30:00
首先,生成简单的数据框并应用 groupby 和 count nums。import pandas as pdimport randomletters = ['a', 'b', 'c', ]nums = [ str(n) for n in range(1, 6)]combs = [    [random.choice(letters), random.choice(nums)] for i in range(10)]    combs_df = pd.DataFrame(combs)combs_df"""     0   10   c   31   a   42   b   13   a   24   a   25   c   16   a   37   c   18   c   29   b   1"""s1 = combs_df.groupby([0, 1])[1].count()type(s1)# pandas.core.series.Seriess1.index"""MultiIndex(levels=[['a', 'b', 'c'], ['1', '2', '3', '4']],           codes=[[0, 0, 0, 1, 2, 2, 2], [1, 2, 3, 0, 0, 1, 2]],           names=[0, 1])"""s1""" 0  1<-----column 1a  2    2   3    1<-- count   4    1    ...b  1    2c  1    2   2    1   3    1Name: 1, dtype: int64我知道如何使用 python for 循环来实现这一点。s1 系列的熊猫是否可以创建一个数据框,其中 s1 的第 1 列成为表的头部,并将计数聚合结果放置在单元格中?像下面转换形式 s1 的例子:"""             1 2 3 4 <-- numsletters--> a 0 2 1 1            b 2 0 0 0 <-- count           c 2 1 1 0 """
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

s1 = s1.reset_index(name='count')

s2 = pd.pivot(s1, index=0, columns=1, values='count').fillna(0)

print(s2)


1    1    2    3    4    5

0                         

a  0.0  0.0  1.0  0.0  1.0

b  1.0  2.0  1.0  0.0  0.0

c  2.0  0.0  1.0  1.0  0.0


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信