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

如何格式化DataFrame中带英镑符号的货币字符串为浮点型以便排序

解决方案

带货币符号、千位分隔符的字符串默认按字符规则排序,必然会出现数值逻辑错误,需要先清洗字符串转成数值类型再排序,具体实现步骤如下:

  1. 数据清洗与类型转换
    先移除字符串里的英镑符号£和千位分隔符,,再通过pandas内置的数值转换方法转成float类型,示例代码:
import pandas as pd

# 构造测试数据集
df = pd.DataFrame({
    "property_price": ["£880,000", "£88,500", "£850,000", "£845,000"]
})

# 生成数值类型的辅助列
df["price_num"] = pd.to_numeric(
    df["property_price"].str.replace("£", "", regex=False).str.replace(",", "", regex=False)
)
  1. 数值排序
    按转换好的数值列做升序排序即可得到正确的数值顺序:
# 按数值升序排列,重置索引
df = df.sort_values(by="price_num", ascending=True).reset_index(drop=True)
  1. 格式化输出目标结果
    如果需要保留千位分隔符的展示格式,可以把排序后的数值重新格式化:
df["sorted_result"] = df["price_num"].apply(lambda x: f"{x:,.0f}")

执行后打印df["sorted_result"]就能得到你预期的排序输出:

0     88,500
1    845,000
2    850,000
3    880,000
Name: sorted_result, dtype: object

注意事项

  • 如果原始列存在空值、其他特殊币种符号或者异常字符,需要提前做缺失值处理、额外字符替换,避免类型转换报错。
  • 不要直接对原始货币字符串做排序,字符串逐字符比对的逻辑会完全打乱数值顺序,必须基于数值类型列排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:36:19