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

如何将Pandas DataFrame中多类型值转换为整数(含单位转换与格式修正)

我来帮你搞定这个Pandas数据格式转换的问题——混合了字符串、整数、浮点数的object列确实容易让人头疼,咱们分场景一步步解决。

一、处理长度列的多格式转换

你的长度列有好几种情况,得逐个判断处理,最稳妥的方式是写一个自定义转换函数,用apply()批量处理每一行的值。

自定义转换函数思路

我们需要覆盖所有给定的场景:

  • 识别并标记无效值'No value known'
  • 把带逗号的字符串(比如'47,587')转换成可计算的数值(这里默认逗号是小数分隔符,符合欧洲格式)
  • 对整数或.0结尾的浮点数直接转成整数
  • 对小数(比如101.1)乘以1000转成米单位后再转整数

代码实现

import pandas as pd

def convert_length(value):
    # 处理无有效值的情况,返回可空NA(也可以保留原字符串,按需调整)
    if isinstance(value, str) and value.strip() == 'No value known':
        return pd.NA
    
    # 处理带逗号的字符串,替换为小数点后转浮点数
    if isinstance(value, str):
        cleaned_value = value.replace(',', '.')
        try:
            value = float(cleaned_value)
        except ValueError:
            # 如果是其他无法转换的字符串,也返回NA
            return pd.NA
    
    # 处理数值类型的情况
    if isinstance(value, (int, float)):
        # 判断是否是整数(包括.0结尾的浮点数)
        if value.is_integer():
            return int(value)
        else:
            # 小数转米单位后转整数,这里用int()直接取整,如需四舍五入可以用round()
            return int(value * 1000)
    
    # 其他未知情况返回NA
    return pd.NA

# 应用到你的长度列,假设列名为'length'
df['length'] = df['length'].apply(convert_length)

说明

  • 用pd.NA标记无效值,方便后续过滤或填充,如果你想保留原字符串'No value known',直接返回原字符串即可
  • 加入了try-except捕获无法转换的异常字符串,避免整个转换过程崩溃
  • 小数转米后用int()取整,如果你需要四舍五入,把int(value * 1000)改成round(value * 1000)就行
二、处理其他整数列的.0后缀转换

对于那些原本是整数但偶尔出现.0浮点数的列,处理起来更简单,核心是先确保数值类型正确,再转成可空整数类型(避免NaN报错)。

方法一:用pd.to_numeric+可空整数类型

这种方法适合列中可能存在NaN的情况:

# 假设列名为'other_integer_col'
df['other_integer_col'] = pd.to_numeric(df['other_integer_col'], errors='coerce').astype('Int64')
  • pd.to_numeric(errors='coerce')会把无法转换的值转成NaN
  • astype('Int64')是Pandas的可空整数类型,既能把.0转成整数,又能保留NaN

方法二:直接转整数(无NaN时用)

如果你的列里没有缺失值或无效值,直接用astype(int)就可以:

df['other_integer_col'] = df['other_integer_col'].astype(int)

方法三:用lambda函数处理

也可以用lambda快速判断转换:

df['other_integer_col'] = df['other_integer_col'].apply(
    lambda x: int(x) if isinstance(x, float) and x.is_integer() else x
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:37:34