2024-04-20 03:10:23 发布
网友
我有这样一个数据帧:
(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
有可能吗?你知道吗
任何帮助都将不胜感激。你知道吗
谢谢
如果列具有相同的名称,则可以通过stack+pivot_table将聚合函数设置为sum获得所需的位置。你知道吗
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
如果列具有相同的名称,则可以通过
stack
+pivot_table
将聚合函数设置为sum
获得所需的位置。你知道吗设置
堆叠和枢轴
也许你可以通过换位来做这样的事情?你知道吗
所以,我会先进行转置,对它们进行分组,然后再进行转置:
输出:
相关问题 更多 >
编程相关推荐