在 Pandas 数据帧上执行拆分并创建一个新帧
Performing Split on Pandas dataframe and create a new frame
我有一个 pandas 数据框,其中有一列是这样的:
Merged_Cities
纽约、威斯康星、亚特兰大
东京、京都、铃木
巴黎、波尔多、里昂
孟买、德里、班加罗尔
伦敦、曼彻斯特、伯明翰
我想要一个输出如下的新数据框:
Merged_Cities
城市
纽约、威斯康星、亚特兰大
纽约
纽约、威斯康星、亚特兰大
威斯康星州
纽约、威斯康星、亚特兰大
亚特兰大
东京、京都、铃木
东京
东京、京都、铃木
京都
东京、京都、铃木
铃木
巴黎、波尔多、里昂
巴黎
巴黎、波尔多、里昂
波尔多
巴黎、波尔多、里昂
里昂
孟买、德里、班加罗尔
孟买
孟买、德里、班加罗尔
德里
孟买、德里、班加罗尔
班加罗尔
伦敦、曼彻斯特、伯明翰
伦敦
伦敦、曼彻斯特、伯明翰
曼彻斯特
伦敦、曼彻斯特、伯明翰
伯明翰
简而言之,我想将所有城市分成不同的行,同时保持 'Merged_Cities' 列。
这是 df
的可复制版本:
df = pd.DataFrame({'Merged_Cities':['New York, Wisconsin, Atlanta',
'Tokyo, Kyoto, Suzuki',
'Paris, Bordeaux, Lyon',
'Mumbai, Delhi, Bangalore',
'London, Manchester, Bermingham']})
使用.str.split()
和.explode()
:
df = df.assign(Cities=df["Merged_Cities"].str.split(", ")).explode("Cities")
print(df)
打印:
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
这与@AndrejKesely 的回答非常相似,只是它合并了 df
及其索引中的城市。
# Create pandas.Series from splitting the column on ', '
s = df['Merged_Cities'].str.split(', ').explode().rename('Cities')
# Merge df with s on their index
df = df.merge(s, left_index=True, right_index=True)
# Result
print(df)
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
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
我有一个 pandas 数据框,其中有一列是这样的:
Merged_Cities |
---|
纽约、威斯康星、亚特兰大 |
东京、京都、铃木 |
巴黎、波尔多、里昂 |
孟买、德里、班加罗尔 |
伦敦、曼彻斯特、伯明翰 |
我想要一个输出如下的新数据框:
Merged_Cities | 城市 |
---|---|
纽约、威斯康星、亚特兰大 | 纽约 |
纽约、威斯康星、亚特兰大 | 威斯康星州 |
纽约、威斯康星、亚特兰大 | 亚特兰大 |
东京、京都、铃木 | 东京 |
东京、京都、铃木 | 京都 |
东京、京都、铃木 | 铃木 |
巴黎、波尔多、里昂 | 巴黎 |
巴黎、波尔多、里昂 | 波尔多 |
巴黎、波尔多、里昂 | 里昂 |
孟买、德里、班加罗尔 | 孟买 |
孟买、德里、班加罗尔 | 德里 |
孟买、德里、班加罗尔 | 班加罗尔 |
伦敦、曼彻斯特、伯明翰 | 伦敦 |
伦敦、曼彻斯特、伯明翰 | 曼彻斯特 |
伦敦、曼彻斯特、伯明翰 | 伯明翰 |
简而言之,我想将所有城市分成不同的行,同时保持 'Merged_Cities' 列。
这是 df
的可复制版本:
df = pd.DataFrame({'Merged_Cities':['New York, Wisconsin, Atlanta',
'Tokyo, Kyoto, Suzuki',
'Paris, Bordeaux, Lyon',
'Mumbai, Delhi, Bangalore',
'London, Manchester, Bermingham']})
使用.str.split()
和.explode()
:
df = df.assign(Cities=df["Merged_Cities"].str.split(", ")).explode("Cities")
print(df)
打印:
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
这与@AndrejKesely 的回答非常相似,只是它合并了 df
及其索引中的城市。
# Create pandas.Series from splitting the column on ', '
s = df['Merged_Cities'].str.split(', ').explode().rename('Cities')
# Merge df with s on their index
df = df.merge(s, left_index=True, right_index=True)
# Result
print(df)
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
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