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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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'])

以上是关于在Pandas中转换层次索引为列。的主要内容,如果未能解决你的问题,请参考以下文章

pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用reset_index函数把行索引重置为列数据(level参数设置将原行索引中的指定层转化为列数据)

pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用reset_index函数把行索引重置为列数据(level参数设置将原行索引中的指定层转化为列数据)

使用 pandas python 将字符串日期转换为列中所有值的数字

pandas读取csv数据使用reset_index函数把行索引重置为列数据(level参数设置将原行索引中的指定层转化为列数据设置drop参数则删除转化后的数据列)

pandas读取csv数据使用reset_index函数把行索引重置为列数据(level参数设置将原行索引中的指定层转化为列数据设置drop参数则删除转化后的数据列)

将 Pandas DataFrame 的行转换为列标题,