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

将混合类型列表(字符串+整数)中的数值型转为int的实现方法

混合类型列表的数值型元素转int实现方案

需求:将包含字符串(含字符型、数值型)与整数的混合列表中,所有数值型字符串元素转换为int类型,非数值字符串和原有整数保持不变。

当前代码

data={'test':['Karan','13333333','5666666','Aryan', 44444,55555]}
df=pd.DataFrame(data)

for i in df["test"]:
    print(i, type(i))

当前输出

Karan <class 'str'>
13333333 <class 'str'>
5666666 <class 'str'>
Aryan <class 'str'>
44444 <class 'int'>
55555 <class 'int'>

期望输出

Karan <class 'str'>
13333333 <class 'int'>
5666666 <class 'int'>
Aryan <class 'str'>
44444 <class 'int'>
55555 <class 'int'>

实现方案

1. Python原生风格实现

通过自定义转换函数配合列表推导,兼容多种边界情况:

def convert_num_str_to_int(item):
    try:
        return int(item)
    except (ValueError, TypeError):
        return item

# 处理原始列表
original_list = ['Karan','13333333','5666666','Aryan', 44444,55555]
converted_list = [convert_num_str_to_int(x) for x in original_list]

# 同步更新DataFrame
data['test'] = converted_list
df = pd.DataFrame(data)

# 验证输出
for i in df["test"]:
    print(i, type(i))

逻辑清晰,能处理字符串含非数值内容、非字符串类型等情况。

2. Pandas简洁实现(1-2行)

方法一:apply+lambda判断

df['test'] = df['test'].apply(lambda x: int(x) if isinstance(x, str) and x.isdigit() else x)

仅针对字符串类型做纯数字判断,符合条件则转int,原有整数和非数值字符串保持原样。

方法二:pd.to_numeric批量转换

df['test'] = df['test'].apply(lambda x: pd.to_numeric(x, errors='ignore'))

pd.to_numeric自动尝试转换元素为数值类型,errors='ignore'让无法转换的元素保留原类型,数值型字符串会被转为兼容int的数值类型,打印效果符合期望输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:39:52