Python 熊猫多索引重组数据帧
在完成DataFrame的分组过程后,我以这种方式构建了表:Python 熊猫多索引重组数据帧,python,pandas,multi-index,Python,Pandas,Multi Index,在完成DataFrame的分组过程后,我以这种方式构建了表: sum count endAt id 2021-01-02 628 100.0 1 2021-01-03 628 300.0 1 2021-01-06 32 100.0 1 2021-01-07 629 50.0 1 2021-01-08 619 150.0 2 ... ... ... ... 2021-04-22 860 100.0
sum count
endAt id
2021-01-02 628 100.0 1
2021-01-03 628 300.0 1
2021-01-06 32 100.0 1
2021-01-07 629 50.0 1
2021-01-08 619 150.0 2
... ... ... ...
2021-04-22 860 100.0 2
861 150.0 2
869 350.0 6
876 100.0 1
883 200.0 4
尝试透视表,但仍无法对结构重新编制索引。
是一种使用以下索引重新构造数据帧的方法:
colums = pd.MultiIndex.from_product([['2021-01-01', '2021-01-02', ....],['sum','count']], names=['date','types'])
index = pd.MltiIndex.from_product([32,619,628,....],names=['id'])
并将数据帧结构化为:
id endAt 2021-01-02 2021-01-02
sum count sum count
32 100 1 200 2
619 0 0 100 1
628 300 3 0 0
...........
883 100 1 200 2
我认为您需要按第一个级别,然后在多索引中交换级别和排序:
df = df.unstack(level=0, fill_value=0).swaplevel(1,0, axis=1).sort_index(axis=1)
print (df)
endAt 2021-01-02 2021-01-03 2021-01-06 2021-01-07 \
count sum count sum count sum count sum
id
32 0 0.0 0 0.0 1 100.0 0 0.0
619 0 0.0 0 0.0 0 0.0 0 0.0
628 1 100.0 1 300.0 0 0.0 0 0.0
629 0 0.0 0 0.0 0 0.0 1 50.0
endAt 2021-01-08
count sum
id
32 0 0.0
619 2 150.0
628 0 0.0
629 0 0.0
样本数据:
d = {'sum': {('2021-01-02', 628): 100.0, ('2021-01-03', 628): 300.0, ('2021-01-06', 32): 100.0, ('2021-01-07', 629): 50.0, ('2021-01-08', 619): 150.0}, 'count': {('2021-01-02', 628): 1, ('2021-01-03', 628): 1, ('2021-01-06', 32): 1, ('2021-01-07', 629): 1, ('2021-01-08', 619): 2}}
df = pd.DataFrame(d).rename_axis(['endAt','id'])
print (df)
sum count
endAt id
2021-01-02 628 100.0 1
2021-01-03 628 300.0 1
2021-01-06 32 100.0 1
2021-01-07 629 50.0 1
2021-01-08 619 150.0 2
非常感谢。是的,我在玩unstack。不幸的是,swaplevel返回了错误“意外的参数轴”(这对我来说很奇怪)。您能告诉我您是如何初始化df的吗?@OcMaRUS-添加到答案中。!非常感谢。是的,正是我们所需要的。现在,我必须找出我的df有什么问题,因为您的过程不适用于。@OcMaRUS-只有“意外参数轴”
错误?也许可以试试熊猫。非常感谢你的时间和想法!!是的,我得到了结果!问题在于索引不正确。设置正确的多索引df和last非常重要。排序索引-也非常重要!