如何按变量提取Pandas DataFrame中的随机非数值字符串?
提取Pandas数值列中混入的字符串
解决思路
遍历每个目标列,筛选出无法转换为数值的记录,提取其中的文本内容并按列整理,同时去重减少冗余。
代码实现
内存友好版(适配200万条记录的大数据集)
import pandas as pd # 替换为你的DataFrame名称 df = your_dataframe_here # 存储各列的异常字符串 col_strings = {} for col in df.columns: # 标记无法转为数值的行 is_non_numeric = pd.to_numeric(df[col], errors='coerce').isna() # 提取去重后的异常字符串 non_num_vals = df.loc[is_non_numeric, col].drop_duplicates().tolist() if non_num_vals: col_strings[col] = non_num_vals # 转为DataFrame方便查看 result = pd.DataFrame.from_dict(col_strings, orient='index').T
简洁版代码
import pandas as pd df = your_dataframe_here # 批量生成各列异常字符串集合 col_strings = { col: df[col][pd.to_numeric(df[col], errors='coerce').isna()].unique().tolist() for col in df.columns } result = pd.DataFrame([col_strings]).explode(df.columns.tolist())
要点说明
pd.to_numeric(..., errors='coerce'):将非数值内容转为NaN,以此定位异常行drop_duplicates()/unique():避免重复提取相同文本,精简结果- 针对200万条记录的大表,逐列遍历的方法内存占用更低,避免一次性处理全量数据导致的内存溢出
内容的提问来源于stack exchange,提问作者balams
相关产品推荐
相关产品推荐

