首先,生成简单的数据框并应用 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 回答
![?](http://img1.sycdn.imooc.com/54584e120001811202200220-100-100.jpg)
吃鸡游戏
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
添加回答
举报
0/150
提交
取消