我有一个像这样的数据框:
(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
有可能吗?
任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
也许您可以通过移调来执行类似的操作?
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
答案 1 :(得分:0)
如果这些列具有相同的名称,则可以通过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