【问题标题】:pass and remove wrong id传递并删除错误的 id
【发布时间】:2023-01-01 00:26:34
【问题描述】:

我想对我的数据框应用一个函数并删除会出错的行/ID。我也想避免 for 循环,因为它们对于大数据帧来说有点慢。示例数据框可能如下所示:

d = {'a': [1, 3], 'b': ["wrong_element", 2]}
df = pd.DataFrame(data=d, index=[1, 2])

print(df)
         a       b
1        1       0
2  wrong_element 2
    try:
        df['a'] = df['a'].apply(lambda x: x-2)
    except Exception:
        pass

期望的输出:

         a       b
1       -1       0

【问题讨论】:

  • 为什么 a 一直是 1 而不是 -1 ?
  • 应该是d = {'a': [1, "wrong_element"], 'b': [1, 2]}
  • 你是对的,修复了错误,谢谢!

标签: python pandas


【解决方案1】:

您可以设置 NaN 以防失败,然后删除 NaN

def operation(value):
    try:
        return value - 2
    except:
        return np.nan
df = pd.DataFrame({'a': [1, "wrong_element"], 'b': [0, 2]}, [1, 2])
df['a'] = df['a'].apply(operation)
df = df.dropna()
     a  b
1 -1.0  0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多