Python 将字符串的列转换为列表中的列

Python 将字符串的列转换为列表中的列,python,string,list,pandas,tuples,Python,String,List,Pandas,Tuples,我的一个列在数据帧中的类型有问题。基本上,该列作为字符串保存在csv文件中,我想将其用作元组,以便能够将其转换为数字列表。下面是一个非常简单的csv: ID,LABELS 1,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)" 2,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)" 如果使用函数“read_csv”加载它,我会得到一个字符串列表。我试图转换为列表,但得到了字符串的列表版本: df.LABELS.apply(lambda x: list(x)) 返回:

我的一个列在数据帧中的类型有问题。基本上,该列作为字符串保存在csv文件中,我想将其用作元组,以便能够将其转换为数字列表。下面是一个非常简单的csv:

ID,LABELS
1,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)"
2,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)"
如果使用函数“read_csv”加载它,我会得到一个字符串列表。我试图转换为列表,但得到了字符串的列表版本:

df.LABELS.apply(lambda x: list(x))
返回:

['(','1','.','0',.,.,.,.,.,'4','.','0',')']
你知道怎么做吗

谢谢。

您可以试试这个(假设您的
csv
名为
filename.csv
):


您可以使用
ast.literal\u eval
,它将为您提供一个元组:

import ast
df.LABELS = df.LABELS.apply(ast.literal_eval)
如果确实需要列表,请使用:

df.LABELS.apply(lambda s: list(ast.literal_eval(s)))
使用和:

但是如果这里没有
NaN
s,那么
列表理解也很有效:

df['LABELS'] = [x.strip('()').split(',') for x in df['LABELS']]

可选地,您可以考虑正则表达式:

pattern = re.compile("[0-9]\.[0-9]")
df.LABELS.apply(pattern.findall)

对不起,我参加晚会迟到了。因此,对于其他后来者,我根据上述回答得出以下结论:

df['hashtags'] = df.apply(lambda row:  row['hashtags'].strip('[]').replace('"', '').replace(' ', '').split(',')   , axis=1)

我加载了一个csv,其中的一些列如下所示…,['hashtag1','hashtag2'],。。。熊猫数据框将其作为字符串对象加载。我使用了上面的代码,并将其转换为列表。然后,我使用“explode”将数据展平。

我会说这是3:-)中更快的解决方案
pattern = re.compile("[0-9]\.[0-9]")
df.LABELS.apply(pattern.findall)
df['hashtags'] = df.apply(lambda row:  row['hashtags'].strip('[]').replace('"', '').replace(' ', '').split(',')   , axis=1)