将字符串数组转换为表的最佳方法是什么?

时间:2019-06-30 18:47:05

标签: python pandas dataframe

给出从csv解析的一些数组,如下所示(不必担心解析部分,只需将此数组视为起点)即可。

说: ['name,age,city', 'tom,12,new york','john, 10, los angeles']

第一个索引就是列名,将其转换为表的最佳方法是什么。我当时正在考虑使用numpy和pandas创建一个数据框,但是转换为做到这一点的最节省内存/时间最有效的方法是什么?然后,我计划进行一些数据分析并创建一些新功能。我可以使用标准python库中的某些东西,还是熊猫是实现此目的的最佳方法?如果我仅使用内置函数,该如何处理?最后,我需要将这些功能组合回数组的原始形式。

谢谢您的指导。

3 个答案:

答案 0 :(得分:4)

仅适用于附件(用于打印的pprint除外)

import pprint

data = [
    "name,age,city",
    "tom,12,new york",
    "john, 10, los angeles",
]
cols = None
out_data = []
for line in data:
    line = line.split(",")

    # We don't know the columns yet; must be the first line
    if not cols:
        cols = line
        continue
    out_data.append(dict(zip(cols, line)))

pprint.pprint(out_data)

使用csv标准模块:

import csv
import io
import pprint

data = [
    "name,age,city",
    "tom,12,new york",
    "john, 10, los angeles",
]

reader = csv.DictReader(io.StringIO('\n'.join(data)))
out_data = list(reader)

pprint.pprint(out_data)

两种方法都输出预期的结果:

[{'age': '12', 'city': 'new york', 'name': 'tom'},
 {'age': ' 10', 'city': ' los angeles', 'name': 'john'}]

答案 1 :(得分:2)

熊猫是必经之路。您不需要解析值。相反,您可以仅使用read_csv功能从CSV文件中创建数据框,然后在该框上进行特征生成/提取或数据清理。 Python标准库不/不应该提供这种功能。

要在一天结束时使用Python列表收集值,请使用df.values.tolist()

pandas在关键部分包含C代码,这使其速度提高了几个数量级。

答案 2 :(得分:1)

我不能为了提高效率而说话,但是就熊猫而言,将其转换为表格的简单方法是最好的选择。我会用pandas.read_csv。

相关问题