猿问

生成缺失的多索引

有一个数据框,例如:


myFrame = pd.DataFrame(np.random.randint(1000, size=[7,4]), 

index=[['GER','GER','GER','GER','FRA','FRA','FRA'],

['Phone','Email','Chat','Other','Phone','Chat','Email']])


                0   1   2   3

GER     Phone   765 876 588 933

        Email   819 364 42  73

        Chat    954 665 317 918

        Other   692 531 312 206

FRA     Phone   272 261 426 270

        Chat    158 172 347 902

        Email   453 721 67  6

如何轻松添加内部级别的缺失索引?例如,您可以看到 GER 有一个“其他”索引标签。我想将“其他”添加到所有国家/地区并用例如 0 填充它的值。可能有第三个外部索引(例如 ITA),可以找到另一个内部索引(例如 SMS)。


最后,所有国家都应该拥有完全相同数量的索引。


Helenr
浏览 166回答 1
1回答

蝴蝶不菲

使用reindexwith MultiIndex.from_productcreated byunique生成的每个级别的值MultiIndex.get_level_values:mux = pd.MultiIndex.from_product([myFrame.index.get_level_values(0).unique(),                                   myFrame.index.get_level_values(1).unique()])  print (myFrame.reindex(mux, fill_value=0))             0    1    2    3GER Phone  250  614  226  777    Email  917  156  148  902    Chat   537  665   87   75    Other  431  203  921  572FRA Phone  159  790  646  810    Email  294  205  949  726    Chat   209  895  128  282    Other    0    0    0    0unstack与stack- 的另一个解决方案MultiIndex排序:print (myFrame.unstack(fill_value=0).stack(dropna=False))             0    1    2    3FRA Chat   209  895  128  282    Email  294  205  949  726    Other    0    0    0    0    Phone  159  790  646  810GER Chat   537  665   87   75    Email  917  156  148  902    Other  431  203  921  572    Phone  250  614  226  777
随时随地看视频慕课网APP

相关分类

Python
我要回答