【问题标题】:Convert pd dataframe into list将 pd 数据框转换为列表
【发布时间】:2019-08-01 20:28:39
【问题描述】:

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

有什么建议吗? 谢谢!

【问题讨论】:

  • 那么您将如何处理输入的第四行“14”?
  • 赋值给变量
  • 将它分配给变量是什么意思?您能否为相应的输入输入预期的数据框?

标签: python pandas spyder python-3.7


【解决方案1】:

您可以将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]

如果需要混合数据 - 带有标量的 lists 添加 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

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2021-12-28
    • 2020-04-15
    • 2020-04-17
    相关资源
    最近更新 更多