繁体   English   中英

将表格数据放入python的最佳方法是什么?

[英]Whats the best way of putting tabular data into python?

我有一个正在处理的CSV文件,并将处理后的数据放入文本文件中。 进入文本文件的全部数据是一个大表(逗号分隔而不是空格)。 我的问题是如何记住文本文件中数据所在的列?

例如。 假设有一列称为“ col”。 我只是在col下放了一些数据。 现在,经过几次迭代,我想再次将其他数​​据放入col(在另一行中)。 我怎么知道col到底在哪里? (并且有很多这样的列。)

希望我不要太含糊...

列出清单。 那是:

[[col1, col2, col3, col4], # Row 1
 [col1, col2, col3, col4], # Row 2
 [col1, col2, col3, col4], # Row 3
 [col1, col2, col3, col4]] # Row 4

要修改特定的列,可以使用单个语句将其转换为列列表:

>>> cols = zip(*rows)
>>> cols
[[row1, row2, row3, row4], # Col 1
 [row1, row2, row3, row4], # Col 2
 [row1, row2, row3, row4], # Col 3
 [row1, row2, row3, row4]] # Col 4

Python的CSV库具有一个名为DictReader函数 ,该函数允许您以Python字典的形式查看和操作数据,从而可以使用常规的迭代工具。

SQLite是否适合您? 我知道您有CSV输入和输出。 但是,您可以将所有数据导入SQLite数据库。 然后使用SQL的功能执行所有必要的处理。 然后,您可以将结果导出为CSV。

也许无论是dictlistlistdict 就个人而言,我会选择前者。 因此,解析CSV的标题行以获得从列标题到列索引的dict 然后,当您浏览每一行时,计算出您所在的索引,抓住列标题,然后将其追加到该列标题的列表末尾。

好问题,我经常遇到这个问题。

通常,要处理这样的csv文件,我更喜欢使用R,它是专门为此设计的data.frame对象。

在python中,您可以看一下这个名为datamatrix的库:

或以numpy / scipy的矩阵表示。

元组是另一个很难解析csv文件的替代方法,但是它们不是基于矩阵概念的p:

您的情况有点含糊,但是我将尝试回答您的问题,“我如何记住文本文件中数据所在的列?”

一种方法是将行列表存储为字典。

注意:我通常使用制表符分隔的文本文件,因此,如果我忘记了有关csv格式的信息,请原谅我。

input_file = open('input.csv', 'r')

# ['col1', 'col2', 'col3']
headers = input_file.readline().strip().split(',')
stored_rows = []
for line in input_file:
    row_data = line.strip().split(',')
    stored_rows.append(dict(zip(headers, row_data)))

现在,每一行都有每一列的值,然后您可以按照需要的顺序对其进行处理和输出。

output_headers = ['col3', 'col1', 'col2']
output_file = open('ouput.csv', 'w')
output_file.write(','.join(output_headers) + '\n')
for row in stored_rows:
    # do any processing you need here
    row['col1'] = row['col1'].strip().lower()  #for example

    # write the data to your output file in the order you want it
    output_file.write(','.join(map(row.get, output_headers)) + '\n')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM