yan*_*ang 1 python string conditional-statements pandas
我有一个数据框,如下所示:
| 类型 | 城市 |
|---|---|
| 1 | dki雅加达 |
| 2 | 爪哇巴拉特 |
| 3 | 爪哇登加 |
| 4 | 东爪哇 |
| 5 | 苏拉威西岛 |
我想创建一个名为city_group基于城市的新专栏。
期望的数据框将是这样的:
| 类型 | 城市 | 城市组 |
|---|---|---|
| 1 | dki雅加达 | 贾博、贾巴尔 |
| 2 | 爪哇巴拉特 | 贾博、贾巴尔 |
| 3 | 爪哇登加 | 贾登, 贾蒂姆 |
| 4 | 东爪哇 | 贾登, 贾蒂姆 |
| 5 | 苏拉威西岛 | 其他的 |
到目前为止,我所做的是使用下面的脚本,但我不知道如何在条件中放入多个字符串。
df.loc[df['city'].str.contains("dki jakarta),'city_group'] = 'jabo, jabar'
Run Code Online (Sandbox Code Playgroud)
如何使用 pandas 获取所需的数据框?先感谢您
创建列表字典以按键映射并在字典理解中将其展平,因此可以使用Series.map-Series.fillna字典中不匹配的所有值others在列中创建值city_group:
d = {'jabo, jabar':['dki jakarta','jawa barat'],
'jateng, jatim':['jawa tengah','jawa timur']}
d1 = {x: k for k, v in d.items() for x in v}
df['city_group'] = df['city'].map(d1).fillna('others')
print (df)
type city city_group
0 1 dki jakarta jabo, jabar
1 2 jawa barat jabo, jabar
2 3 jawa tengah jateng, jatim
3 4 jawa timur jateng, jatim
4 5 sulawesi others
Run Code Online (Sandbox Code Playgroud)