如何移除Pandas DataFrame中Column1为文本的行,保留整数行
过滤Pandas DataFrame中Column1列为整数的行
原始数据
| Column1 | Column2 |
|---|---|
| 任意内容 | 13 |
| 某些内容 | 更多 |
| 1 | 文本 |
| -15 | 13333 |
| 更多文本 | 67 |
| 354 | 测试 |
期望结果
| Column1 | Column2 |
|---|---|
| 1 | 文本 |
| -15 | 13333 |
| 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
相关产品推荐
相关产品推荐

