Python如何按规则转换DataFrame指定列的字符串值
货币对列转换实现方法
你处理的是标准3位ISO货币码拼接的6位货币对翻转需求,直接用pandas内置的字符串切片处理即可,逻辑简单、执行效率高,不会出现匹配错误。
- 核心逻辑:所有符合格式的货币对都是前3位为基准货币、后3位为计价货币,你需要的转换效果等价于把字符串后3位移动到最前面,和前3位交换位置即可。
全量转换(所有货币对统一翻转)
如果需要对CCY列所有值做前后3位交换,直接用如下代码:
import pandas as pd # 构造原始样例数据 df = pd.DataFrame({ 'CCY': ['GBPUSD', 'EURUSD', 'CNYUSD'] }) # 核心转换逻辑:取字符串后3位拼接前3位 df['CCY'] = df['CCY'].str[-3:] + df['CCY'].str[:3]
执行后打印df即可得到目标结果:
CCY 0 USDGBP 1 USDEUR 2 USDCNY
定向转换(仅后缀为USD的货币对翻转)
如果后续数据里存在非USD计价的货币对(比如EURGBP、GBPJPY这类)不需要翻转,可以加一层筛选判断,只处理后3位是USD的条目:
# 筛选出所有后缀为USD的行 usd_pair_mask = df['CCY'].str.endswith('USD') # 仅对符合条件的行做转换 df.loc[usd_pair_mask, 'CCY'] = 'USD' + df.loc[usd_pair_mask, 'CCY'].str[:3]
注意:以上方法仅适用于标准3位货币码拼接的6位货币对场景,如果存在非标准长度的货币代码(比如长度不为3的加密货币代码),需要先根据固定分隔符或者货币码映射表做拆分再拼接。
内容的提问来源于stack exchange,提问作者Naituil
相关产品推荐
相关产品推荐

