Nay*_*ale 3 python aggregate-functions dataframe pandas pandas-groupby
我正在研究 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 | 伦敦、伯明翰 |
但我不想要空字符串......
请在这里帮助我。
非常感谢您的帮助。
您可以尝试替换空字符串NaN,然后添加.dropna()到聚合 lambda 函数,如下所示:
df['Cities'] = df['Cities'].replace('', np.nan)
(df.groupby('ID', as_index=False)
.agg({'Cities': lambda x: x.dropna().tolist()})
)
Run Code Online (Sandbox Code Playgroud)
结果:
ID Cities
0 1 [New York, Atlanta]
1 2 [Tokyo, Kyoto]
2 3 [Paris, Bordeaux]
3 4 [Mumbai, Bangalore]
4 5 [London, Bermingham]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2515 次 |
| 最近记录: |