基于多级索引的Pandas数据帧行添加

2024-04-20 03:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

(multilevel)index  aaa,aaa,aaa,bbb,bbb,bbb,ccc,ccc

    Column          1,  1 , 1 , 0,  1,  0,  1 , 1               

我想根据索引添加行,以便得到:

   index       aaa,    bbb,     ccc 
   column       3,      1,       2        

有可能吗?你知道吗

任何帮助都将不胜感激。你知道吗

谢谢


Tags: 数据indexcolumnbbbcccaaamultilevel
2条回答

如果列具有相同的名称,则可以通过stack+pivot_table将聚合函数设置为sum获得所需的位置。你知道吗

设置

import pandas as pd
df = pd.DataFrame({'id1': [1,1,1,2], 'id2': [1,2,3,1],
                 '1': [1,1,1,1], '2': [0,0,1,1], '3': [0,1,0,0],
                 '4': [0,0,0,0], '5': [1,1,0,0], '6': [0,1,0,0]})
df = df.set_index(['id1', 'id2'])
df.columns=['aaa','aaa','aaa','bbb','bbb','bbb']

         aaa  aaa  aaa  bbb  bbb  bbb
id1 id2                              
1   1      1    0    0    0    1    0
    2      1    0    1    0    1    1
    3      1    1    0    0    0    0
2   1      1    1    0    0    0    0

堆叠和枢轴

stacked = df.stack().reset_index()
df = pd.pivot_table(stacked, index=['id1', 'id2'], columns='level_2', values=0, aggfunc='sum')
df.columns.name=None

print(df)
         aaa  bbb
id1 id2          
1   1      1    1
    2      2    2
    3      2    0
2   1      2    0

也许你可以通过换位来做这样的事情?你知道吗

import pandas as pd

df = pd.DataFrame([['aaa', 'aaa', 'aaa','bbb', 'bbb', 'bbb', 'ccc', 'ccc'],
                   [1, 1, 1, 0, 1, 0, 1, 1]], index = ['index', 'column'])

所以,我会先进行转置,对它们进行分组,然后再进行转置:

df = df.T
df = df.groupby('index').sum()
df = df.T

输出:

index   aaa  bbb  ccc
column    3    1    2

相关问题 更多 >