gpt4 book ai didi

python - 如何在 Pandas 数据框中使用 ast.literal_eval 并处理异常

转载 作者:行者123 更新时间:2023-11-28 17:04:12 24 4
gpt4 key购买 nike

我有一个 dataframe,其中有一列包含 tuple 数据作为字符串。例如。 '(5,6)'。我需要将其转换为元组结构。一种方法是使用 ast.literal_eval()。我就是这样用的。

df['Column'] = df['Column'].apply(ast.literal_eval)

不幸的是,我在该列中的数据也包含空字符串。 ast.literal_eval() 无法处理此问题。我收到此错误。

语法错误:解析时出现意外的 EOF

我不确定这是不是因为它无法处理这样的字符。根据我的阅读,我发现 ast.literal_eval() 仅在列表、字典或元组存在于字符串结构中的情况下有效。

为了克服这个问题,我尝试创建自己的函数并在它引发异常时返回一个空字符串。

def literal_return(val):
try:
return ast.literal_eval(val)
except ValueError:
return (val)

df['Column2'] = df['Column'].apply(literal_return)

即使在这种情况下,也会弹出相同的错误。我们如何处理这个。即使有一种方法可以忽略某些行来应用该函数并应用于其余行,这也会很棒。感谢您的帮助。

最佳答案

我会简单地要求每个条目的字符串类型:

from ast import literal_eval
df['column_2'] = df.column_1.apply(lambda x: literal_eval(str(x)))

如果您需要高级异常处理,您可以这样做,例如:

def f(x):
try:
return literal_eval(str(x))
except Exception as e:
print(e)
return []

df['column_2'] = df.column_1.apply(lambda x: f(x))

关于python - 如何在 Pandas 数据框中使用 ast.literal_eval 并处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52232742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com