【问题标题】:Convert a list of strings containing a list into a dataframe将包含列表的字符串列表转换为数据框
【发布时间】:2022-12-11 16:34:14
【问题描述】:

我有一个字符串列表,我想将其转换为数据框,但是列表对象中的“,”搞乱了我采用的每一种方法,任何想法。

例如: y = [ "a,['b'],0.3,1" ,"a,['b,c'],0.4,2" ]

应该变成: df 有 4 列,包括 'a',['b'],0.3,1 'a',['b,c'],0.4,2

这是迄今为止我发现的最接近的,但它崩溃了,因为它看到第二行有 5 个元素而不是 4 个。 df = pd.read_csv(io.StringIO("\n".join(y)), delimiter=",", header=None)) 谢谢。

【问题讨论】:

  • 我真的不知道,但我觉得 json.reads() 可能会有帮助?

标签: python pandas string list dataframe


【解决方案1】:

首先,我会搜索并修复根本问题(如果可能的话——数据是如何生成的)?

如果无法修复,您可以尝试:

import csv
import pandas as pd
from io import StringIO


y = ["a,['b'],0.3,1", "a,['b,c'],0.4,2"]

out = []
for s in y:
    s = StringIO(s.replace("[", "").replace("]", ""))
    out.append(next(csv.reader(s, quotechar="'")))

df = pd.DataFrame(out, columns=["Col1", "Col2", "Col3", "Col4"])
df["Col2"] = df["Col2"].str.split(",")

print(df)

印刷:

  Col1    Col2 Col3 Col4
0    a     [b]  0.3    1
1    a  [b, c]  0.4    2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2019-04-21
    相关资源
    最近更新 更多