我有这个txt输入:
["A" "B" "C" "D"]
[8 3 6 11]
[5 7 4 3]
14
我通过以下方式读取文件:
df = pd.read_csv("data.txt", header = None, engine = 'python')
然后,我想将此数据框转换为列表。 我尝试这样做:
L = df[0].iloc[0]
>>> '["A" "B" "C" "D"]'
但是,如果我想获取第一个值,则输出为
L[0]
>>> '['
我已经尝试过
ast.literal_eval(L)
没有成功。我得到:
['ABCD']
有什么建议吗? 谢谢!
答案 0 :(得分:2)
您可以将Series.str.strip
与Series.str.split
结合使用:
df['new'] = df[0].str.strip('[]').str.split()
print (df)
0 new
0 ["A" "B" "C" "D"] ["A", "B", "C", "D"]
1 [8 3 6 11] [8, 3, 6, 11]
2 [5 7 4 3] [5, 7, 4, 3]
3 14 [14]
如果需要混合数据-list
个标量,请添加Series.mask
,仅对以[
开头的值Series.str.startswith
检查,应用解决方案:
df['new'] = df[0].mask(df[0].str.startswith('['), df[0].str.strip('[]').str.split())
print (df)
0 new
0 ["A" "B" "C" "D"] ["A", "B", "C", "D"]
1 [8 3 6 11] [8, 3, 6, 11]
2 [5 7 4 3] [5, 7, 4, 3]
3 14 14