我正在研究 Python Pandas。
我有一个 pandas 数据框,其中包含如下列:
| ID | 城市 |
|---|---|
| 1 | 纽约 |
| 1 | ” |
| 1 | 亚特兰大 |
| 2 | 东京 |
| 2 | 京都 |
| 2 | ” |
| 3 | 巴黎 |
| 3 | 波尔多 |
| 3 | ” |
| 4 | 孟买 |
| 4 | ” |
| 4 | 班加罗尔 |
| 5 | 伦敦 |
| 5 | ” |
| 5 | 伯明翰 |
请注意,列中的空单元格要么是空字符串 (''),要么是 Nan 或 None。(为简单起见,我们只说它们是空字符串(''))。
我希望结果是这样的:
| ID | 城市 |
|---|---|
| 1 | 纽约、亚特兰大 |
| 2 | 东京、京都 |
| 3 | 巴黎、波尔多 |
| 4 | 孟买、班加罗尔 |
| 5 | 伦敦、伯明翰 |
简而言之,我想按 ID 分组,然后获取列表(通过删除空字符串)。
我有一个示例代码,但它实际上给了我带有空字符串的结果,我想删除空字符串。
dataFrame.groupby(['ID'], as_index=False)
.agg({'Cities': lambda x: x.tolist()})
Run Code Online (Sandbox Code Playgroud)
它给了我这样的结果:
| ID | 城市 |
|---|---|
| 1 | 纽约、亚特兰大 |
| 2 | 东京、京都、 |
| 3 | 巴黎、波尔多、 |
| 4 | 孟买、班加罗尔 |
| 5 | 伦敦、伯明翰 |
但我不想要空字符串...... …
我有一个像这样一列的熊猫数据框:
| 合并_城市 |
|---|
| 纽约、威斯康星、亚特兰大 |
| 东京、京都、铃木 |
| 巴黎、波尔多、里昂 |
| 孟买、德里、班加罗尔 |
| 伦敦、曼彻斯特、伯明翰 |
我想要一个新的数据框,输出如下:
| 合并_城市 | 城市 |
|---|---|
| 纽约、威斯康星、亚特兰大 | 纽约 |
| 纽约、威斯康星、亚特兰大 | 威斯康星州 |
| 纽约、威斯康星、亚特兰大 | 亚特兰大 |
| 东京、京都、铃木 | 东京 |
| 东京、京都、铃木 | 京都 |
| 东京、京都、铃木 | 铃木 |
| 巴黎、波尔多、里昂 | 巴黎 |
| 巴黎、波尔多、里昂 | 波尔多 |
| 巴黎、波尔多、里昂 | 里昂 |
| 孟买、德里、班加罗尔 | 孟买 |
| 孟买、德里、班加罗尔 | 德里 |
| 孟买、德里、班加罗尔 | 班加罗尔 |
| 伦敦、曼彻斯特、伯明翰 | 伦敦 |
| 伦敦、曼彻斯特、伯明翰 | 曼彻斯特 |
| 伦敦、曼彻斯特、伯明翰 | 伯明翰 |
简而言之,我想将所有城市拆分为不同的行,同时保留“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)