首页 > 解决方案 > 在一列中对另一列中共享相同值的值进行分组(熊猫:groupby.apply/multi-index)

问题描述

我正在使用以下数据框这只是 df 的一部分

我想创建一个多索引数据框,其中顶级索引是title_no,子索引是所有release_no共享相同的值title_no

我曾尝试使用 groupby.apply 方法,但这会将release_no's具有相同内容的列分组title_no并消除其余列:

df = pd.DataFrame(df.groupby('title_no')['release_no'].unique()).reset_index()

这是结果

理想情况下,我希望我的数据框看起来像这样:

title_no           release_no           name                     country_id

199034                                         

                   732644               Jurassic Park III        ES
                   891376               Jurassic Park III        CA
                   732658               Jurassic Park III        TH
199052

                   1119213              Myth of Fingerprints     IT
                   925041               Myth of Fingerprints     ES
                   448432               Myth of Fingerprints     US
                   564033               Myth of Fingerprints     FR

...

有没有办法在熊猫中做到这一点,我可以在其中列出相同的行,title_no并能够在一个级别上索引行title_no ,然后release_no在较低级别上索引?

标签: pythonpandasdataframeindexingapply

解决方案


你不需要 a groupby;排序就足够了:

df.sort_values(['title_no', 'release_no']).set_index(['title_no', 'release_no'])

推荐阅读