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

首先,生成简单的数据框并应用 groupby 和 count nums。


import pandas as pd

import random


letters = ['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   1

0   c   3

1   a   4

2   b   1

3   a   2

4   a   2

5   c   1

6   a   3

7   c   1

8   c   2

9   b   1

"""


s1 = combs_df.groupby([0, 1])[1].count()


type(s1)

# pandas.core.series.Series


s1.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 1

a  2    2

   3    1<-- count

   4    1    ...

b  1    2

c  1    2

   2    1

   3    1

Name: 1, dtype: int64

我知道如何使用 python for 循环来实现这一点。


s1 系列的熊猫是否可以创建一个数据框,其中 s1 的第 1 列成为表的头部,并将计数聚合结果放置在单元格中?像下面转换形式 s1 的例子:

"""

             1 2 3 4 <-- nums

letters--> a 0 2 1 1 

           b 2 0 0 0 <-- count

           c 2 1 1 0 

"""


四季花海
浏览 129回答 1
1回答

吃鸡游戏

s1 = s1.reset_index(name='count')s2 = pd.pivot(s1, index=0, columns=1, values='count').fillna(0)print(s2)给1&nbsp; &nbsp; 1&nbsp; &nbsp; 2&nbsp; &nbsp; 3&nbsp; &nbsp; 4&nbsp; &nbsp; 50&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a&nbsp; 0.0&nbsp; 0.0&nbsp; 1.0&nbsp; 0.0&nbsp; 1.0b&nbsp; 1.0&nbsp; 2.0&nbsp; 1.0&nbsp; 0.0&nbsp; 0.0c&nbsp; 2.0&nbsp; 0.0&nbsp; 1.0&nbsp; 1.0&nbsp; 0.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python