在Pandas中转换层次索引为列。

以下是输入的数据

df1 = pd.DataFrame( { 
        "author" : ["A","B","A","A","C","B"] , 
        "topic" : ["cat", "dog", "dog", "cat", "dog", "dog"] } )
df1
    author  topic
0   A   cat
1   B   dog
2   A   dog
3   A   cat
4   C   dog
5   B   dog

我使用的分组如下

g1 = df1.groupby('author')['topic'].value_counts()
author  topic
A       cat      2
        dog      1
B       dog      2
C       dog      1

我想实现的是

author  cat   dog 
A       2     1
B       0     2
C       0     1

基本上,需要将分层索引中的二阶索引转换为列。如何才能做到这一点?

解决方案:

使用 Series.unstack 这里。

df = df1.groupby('author')['topic'].value_counts().unstack(fill_value=0)

另一个解决方案是: crosstab:

df = pd.crosstab(df1['author'], df1['topic'])

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在JavaAndroid中获取开始和结束的一天的纪元第二。

2022-4-20 7:00:07

解决方案

Java8 - 基于POJO更新多个列表。

2022-4-20 7:00:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索