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

如何移除Pandas DataFrame中Column1为文本的行,保留整数行

过滤Pandas DataFrame中Column1列为整数的行

原始数据

Column1Column2
任意内容13
某些内容更多
1文本
-1513333
更多文本67
354测试

期望结果

Column1Column2
1文本
-1513333
354测试

解决方案

方法1:强制转换数值类型过滤

通过尝试将Column1转换为数值,无法转换的内容会被标记为NaN,再过滤掉这些无效行:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Column1': ['任意内容', '某些内容', '1', '-15', '更多文本', '354'],
    'Column2': ['13', '更多', '文本', '13333', '67', '测试']
})

# 转换Column1为数值,无效内容设为NaN
df['Column1'] = pd.to_numeric(df['Column1'], errors='coerce')
# 过滤掉Column1为NaN的行,重置索引
filtered_df = df.dropna(subset=['Column1']).reset_index(drop=True)
# 可选:将Column1转回整数类型
filtered_df['Column1'] = filtered_df['Column1'].astype(int)

print(filtered_df)

方法2:正则表达式精准匹配整数

直接用正则匹配正负整数格式的字符串,筛选符合条件的行:

import pandas as pd

df = pd.DataFrame({
    'Column1': ['任意内容', '某些内容', '1', '-15', '更多文本', '354'],
    'Column2': ['13', '更多', '文本', '13333', '67', '测试']
})

# 匹配正负整数的正则规则:^-?\d+$
filtered_df = df[df['Column1'].str.match(r'^-?\d+$', na=False)].reset_index(drop=True)

print(filtered_df)

两种方法都能得到目标结果,方法1适合Column1混合字符串与数字格式的场景,方法2则精准匹配整数格式的字符串内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:05:29