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

如何用Pandas统计每列中字符串与整数的数量?

在Pandas中统计列内整数与字符串数量的高效方法

嗨,你提到的需求完全可以用Pandas的内置方法高效实现,不用自己写低效的逐元素循环~ 下面分两种常见场景给你具体方案:

场景1:列中是混合数据类型(同时存int和str对象)

如果你的DataFrame列里直接混合了整数和字符串类型(比如有的元素是1,有的是'a'),可以用apply结合类型判断来统计,Pandas的内部优化会比手动写for循环快很多:

首先创建示例数据:

import pandas as pd
df = pd.DataFrame({
    'mixed_col': [1, 'apple', 2, 'banana', 3, 'cherry'],
    'another_col': ['x', 5, 'y', 6, 'z', 7]
})

统计每列的整数、字符串数量:

# 对每列应用统计逻辑
count_result = df.apply(lambda col: pd.Series({
    '整数数量': col.apply(lambda x: isinstance(x, int)).sum(),
    '字符串数量': col.apply(lambda x: isinstance(x, str)).sum()
}))

print(count_result)

输出会是:

mixed_col  another_col
整数数量            3            3
字符串数量          3            3

场景2:列中都是字符串,但部分可转为整数(比如'123'和'abc')

如果列的类型是字符串,但你想统计其中格式为整数的字符串数量(比如'456'算,'abc'不算),可以用自定义判断函数结合apply:

# 定义判断字符串是否为整数的函数
def is_integer_str(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

# 统计单列
int_str_count = df['string_col'].apply(is_integer_str).sum()
str_count = len(df['string_col']) - int_str_count

print(f"可转整数的字符串数量:{int_str_count}")
print(f"普通字符串数量:{str_count}")

如果要批量处理所有字符串列,可以用:

str_cols = df.select_dtypes(include=['object']).columns
count_result = df[str_cols].apply(lambda col: pd.Series({
    '可转整数的字符串数': col.apply(is_integer_str).sum(),
    '普通字符串数': len(col) - col.apply(is_integer_str).sum()
}))

为什么不用手动逐元素循环?

Pandas的apply、矢量化方法都是基于NumPy的底层C实现,比Python层面的for循环效率高几个数量级——尤其是数据量较大时,这种差异会非常明显。如果还有特殊场景(比如需要处理负数、带小数点的整数等),可以调整判断逻辑来适配~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:08:17