You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python转换序数词为英文单词?Pandas地址列转换方案问询

嘿,我来帮你搞定这个序数词转换的问题!

核心思路

其实Python标准库没有直接把"1st"这类序数词字符串转成英文单词的函数,但我们可以结合num2words和正则表达式来实现,而且能轻松应用到Pandas DataFrame的列上。

步骤1:准备依赖

首先确保你已经安装了需要的库:

pip install num2words pandas

步骤2:定义转换函数

我们先写一个函数,用来处理单个序数词字符串(比如"1st"):

from num2words import num2words
import re

def ordinal_str_to_word(ordinal_str):
    # 提取字符串里的数字部分
    num = int(re.search(r'\d+', ordinal_str).group())
    # 转成序数词单词
    return num2words(num, to='ordinal')

步骤3:批量处理DataFrame列

接下来用Pandas的str.replace方法,配合正则表达式匹配所有序数词模式,然后应用上面的函数:

import pandas as pd

# 你的示例DataFrame
data = {
    'Address': [
        '2 fairgreen lane bolton callan',
        '2 leix rd cabra dublin 7',
        '7 sraid na mara 1st sea rd strandhill rd'
    ]
}
newdf = pd.DataFrame(data)

# 正则匹配序数词模式:数字+st/nd/rd/th
pattern = r'\d+(st|nd|rd|th)'
newdf['Address'] = newdf['Address'].str.replace(pattern, lambda x: ordinal_str_to_word(x.group()), regex=True)

# 查看结果
print(newdf)

运行后输出会是:

Address
0        2 fairgreen lane bolton callan
1             2 leix rd cabra dublin 7
2  7 sraid na mara first sea rd strandhill rd

补充说明

  • 正则表达式\d+(st|nd|rd|th)能匹配所有常见的序数词格式(比如1st、2nd、3rd、4th、10th、11th等)
  • 如果你的地址里有大写的序数词(比如"1ST"),可以在函数里加个.lower()处理,或者调整正则为\d+(ST|ND|RD|TH|st|nd|rd|th)来匹配大小写
  • num2words支持很多语言,但默认是英文,刚好符合你的需求

内容的提问来源于stack exchange,提问作者CuriousQuest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:37:31