首页 > 解决方案 > Pandas 操作数据帧和异常处理

问题描述

我是 Jupyter 中的 pandas 新手,并且继承了一些非常奇怪的代码。我有一个数据框对象,其中包含任意命名的列,其中大多数包含整数。在其中一个牢房中有

df = df/100

这似乎将数据框中的每个条目除以 100。不幸的是,某些条目可能是字符串,这会导致错误,因为您不能除以 100。有谁知道捕获此类异常并继续前进的方法。我想如果单元格是整数/双精度/浮点数以进行除法,并且它是一个不做任何事情的字符串。我在想类似的东西

    for (lambda x in df.columns):
        if x.type != "str":
           df[x] = df[x]/100 

我可能需要为行添加一个循环并使用 df.iloc 或其他东西,但实际上我不确定执行此操作的最佳方法,但我确信有一些可爱的方法可以访问这些信息。

标签: pandasdataframeexception

解决方案


您对“什么都不做”的描述有点含糊:您要保留原始值还是将其指定为 NA?此外,每列是否具有单一数据类型,还是有混合类型?

这是一个解决方案:

# Mock data
df = pd.DataFrame({
    'col1': [1, 'Two', 3, 'Four'],
    'col2': ['Five', 6, 'Seven', 8]
})

# Try converting every column to numeric before the division
# If the operation cannot be carried out, assign NaN
tmp = df.apply(pd.to_numeric, errors='coerce')  / 100

# Replace NaN cells with the original values from df
result = tmp.where(tmp.notnull(), df)

推荐阅读