我有一个dataframe
有一列包含tuple
数据作为字符串。例如。'(5,6)'
。我需要将其转换为元组结构。一种方法是使用 ast.literal_eval()。我就是这样使用的。
df['Column'] = df['Column'].apply(ast.literal_eval)
不幸的是,我在本列中的数据也包含空字符串。这ast.literal_eval()
无法处理这个问题。我收到这个错误。
SyntaxError: unexpected EOF while parsing
我不确定这是否是因为它无法处理这样的角色。根据我的阅读,我发现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))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)