python - 基于两列模式的字符串操作,有什么方便的方法吗?
问题描述
d = {'country': ['US', 'US', 'United Kingdom', 'United Kingdom'],
'province/state': ['New York', np.nan, 'Gibraltar', np.nan]}
df = pd.DataFrame(data=d)
我想有三个步骤:
步骤1:用相关国家填写省的NA
df['province/state'].fillna(df['country'], inplace=True]
第 2 步:通过将国家和省与“-”连接起来创建一个新的 col:
df['new_geo'] = df['country'] + '-' + df['province/state']
第三步:如果重复国家,则删除:例如删除United Kingdom-United Kingdom。只保留那些不重叠的,例如英国-直布罗陀。但我不确定应该使用什么正则表达式。
有没有方便的方法来做到这一点?
解决方案
尝试:
df['new_geo'] = np.where(df['province/state'].notna(), df['country'] + '-' + df['province/state'], df['country'])
df['province/state']=df['province/state'].fillna(df['country'])
输出:
country province/state new_geo
0 US New York US-New York
1 US US US
2 United Kingdom Gibraltar United Kingdom-Gibraltar
3 United Kingdom United Kingdom United Kingdom
推荐阅读
- wordpress - 触发高级自定义字段 (ACF) 'acf/save_post' 操作
- python - PayPal 是否仍支持通过 HTTP REST API 的活动报告和余额?
- flutter - 项目目录中没有 Podfile | 颤振 - firebase 身份验证
- minecraft - WorldEdit 如何处理画笔?
- python - 以 JSON 格式获取存储过程结果
- java - 我需要重命名我在java中生成的json对象的键
- html - 从参考表中提取样式格式
- php - 如何在 PHP 一个班轮中在几分钟内转换字符串“4H6M”?
- javascript - Node.js 读取/解析 ini 文件
- android - 在jetpack compose中找不到ProvideEmphasis