将PD数据帧转换为列表

时间:2019-03-11 13:49:07

标签: python pandas spyder python-3.7

我有这个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']

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将Series.str.stripSeries.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