python - 如何删除具有 1000 列的大型 df 中的错误值

标签 python pandas dataframe data-cleaning

我有一个超过 1000 列的大型数据集,数据集很乱,混合了 dtypes。有 2 个 int64 列、119 个浮点列和 1266 个对象列。

我想开始数据清理,但意识到有几个问题。由于列太多,目视检查数据以定位错误过于繁琐。数据集示例如下

Company ID  Year    Date         Actual Loan Loss  Depreciation          Accounts Payable
001         2001    19 Oct 2001  100000.00         40000                 $$ER: 4540,NO DATA VALUES FOUND
002         2002    18 Sept 2001 NaN               $$ER: E100,NO WORLDSCOPE DATA FOR THIS CODE
003         2004    01 Aug 2000  145000.00         5000                  Finance Dept

我想在删除空行之前删除所有错误变量。错误变量通常以“$$ER:”开头

我试过以下
#load the dataset
df = pd.read_excel("path/file1.xlsx", sheet_name = "DATA_TS")
#examine the data
df.head(20)
#check number of rows, cols and dtypes
df.info()

#create a function to replace the error values

def convert_datatypes(val):
    new_val = val.replace('$$ER: 4540,NO DATA VALUES FOUND','').replace('$$ER: E100,NO WORLDSCOPE DATA FOR THIS CODE', '')
    return new_val

df.apply(convert_datatypes)

该代码有效,但我再次检查并意识到还有其他错误值,例如 "$$ER: E100,INVALID CODE OR EXPRESSION ENTERED".
我很确定还有其他错误值,想知道是否有任何其他方法可以有效地删除错误值并同时将列的 dtype 更改为所谓正确的 dtype(即,从对象为 int 或 str)?

感谢任何形式的帮助,在此先感谢您!

最佳答案

这将解决问题:

for col in df.columns[df.dtypes=='object']:
    df.loc[df[col].str.startswith('$$ER',na=False),col]=''

您也可以使用 contains() 但您必须指定 regex=False
for col in df.columns[df.dtypes=='object']:
    df.loc[df[col].str.contains('$$ER',na=False,regex=False),col]=''

关于python - 如何删除具有 1000 列的大型 df 中的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655386/

相关文章:

python - 当我在云端硬盘中创建快捷方式时,它的 mimetype 为 'application/octet-stream',即使我指定了 '' application/vnd.google-apps.drive-sdk''

python - Pandas Merge - 如何避免重复列

python - 如何根据条形图的值在 matplotlib 中创建自定义图例?

python - 基于差异的过滤数据框有两个系列,一个通过字典映射

python - Pandas 数据框,每个步骤重复行值

python - Tensorflow中 `tf.function`和 `autograph.to_graph`是什么关系?

python - spacy 无法运行,错误为 : 'cymem.cymem' has no attribute 'PyMalloc'

python - 如何移动 Pandas 数据框中的列

python - 如何计算重复的 Pandas 数据框

python - 计算数据帧每一行中元素的出现次数