对 Pandas 数据帧执行拆分并创建一个新帧

Nay*_*ale 2 python expand split dataframe pandas

我有一个像这样一列的熊猫数据框:

合并_城市
纽约、威斯康星、亚特兰大
东京、京都、铃木
巴黎、波尔多、里昂
孟买、德里、班加罗尔
伦敦、曼彻斯特、伯明翰

我想要一个新的数据框,输出如下:

合并_城市 城市
纽约、威斯康星、亚特兰大 纽约
纽约、威斯康星、亚特兰大 威斯康星州
纽约、威斯康星、亚特兰大 亚特兰大
东京、京都、铃木 东京
东京、京都、铃木 京都
东京、京都、铃木 铃木
巴黎、波尔多、里昂 巴黎
巴黎、波尔多、里昂 波尔多
巴黎、波尔多、里昂 里昂
孟买、德里、班加罗尔 孟买
孟买、德里、班加罗尔 德里
孟买、德里、班加罗尔 班加罗尔
伦敦、曼彻斯特、伯明翰 伦敦
伦敦、曼彻斯特、伯明翰 曼彻斯特
伦敦、曼彻斯特、伯明翰 伯明翰

简而言之,我想将所有城市拆分为不同的行,同时保留“Merged_Cities”列。

这是一个可复制的版本df

df = pd.DataFrame({'Merged_Cities':['New York, Wisconsin, Atlanta',
                                    'Tokyo, Kyoto, Suzuki',
                                    'Paris, Bordeaux, Lyon',
                                    'Mumbai, Delhi, Bangalore',
                                    'London, Manchester, Bermingham']})
Run Code Online (Sandbox Code Playgroud)

And*_*ely 5

使用.str.split().explode()

df = df.assign(Cities=df["Merged_Cities"].str.split(", ")).explode("Cities")
print(df)
Run Code Online (Sandbox Code Playgroud)

印刷:

                    Merged_Cities      Cities
0    New York, Wisconsin, Atlanta    New York
0    New York, Wisconsin, Atlanta   Wisconsin
0    New York, Wisconsin, Atlanta     Atlanta
1            Tokyo, Kyoto, Suzuki       Tokyo
1            Tokyo, Kyoto, Suzuki       Kyoto
1            Tokyo, Kyoto, Suzuki      Suzuki
2           Paris, Bordeaux, Lyon       Paris
2           Paris, Bordeaux, Lyon    Bordeaux
2           Paris, Bordeaux, Lyon        Lyon
3        Mumbai, Delhi, Bangalore      Mumbai
3        Mumbai, Delhi, Bangalore       Delhi
3        Mumbai, Delhi, Bangalore   Bangalore
4  London, Manchester, Bermingham      London
4  London, Manchester, Bermingham  Manchester
4  London, Manchester, Bermingham  Bermingham
Run Code Online (Sandbox Code Playgroud)