从CSV文件创建列表



我有一个名为"投资者历史";。我想手动使用csv包(不使用Panda Dataframe(从以下数据集创建一个列表。数据集有以下3个标题:

Stock_Price          Exchange_Rate     Invest         
High                 Low             Y
High                 High            N       
Low                  Low             Y

从这个数据集中,我想创建一个列表,看起来像这样作为输出:

{('Stock_Price', 'High'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')}
{('Stock_Price', 'High'), ('Exchange_Rate', 'High'), ('Invest', 'N')}
{('Stock_Price', 'Low'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')}

这更像是垂直打印带有元素的页眉。

我假设您有一个真实的CSV,数据由,分隔

您可以使用DictReader()将其作为字典列表

f = open(filename)
reader = csv.DictReader(f)
rows = list(reader)
[
{'Stock_Price': 'High', 'Exchange_Rate': 'Low', 'Invest': 'Y'},   
{'Stock_Price': 'High', 'Exchange_Rate': 'High', 'Invest': 'N'}, 
{'Stock_Price': 'Low', 'Exchange_Rate': 'Low', 'Invest': 'Y'}
]

稍后,您可以使用.items()将每个字典转换为元组列表

rows = [list(r.items()) for r in rows]
[
[('Stock_Price', 'High'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')],
[('Stock_Price', 'High'), ('Exchange_Rate', 'High'), ('Invest', 'N')],
[('Stock_Price', 'Low'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')]
]

如果你真的想作为集合列表,那么你就set()而不是list()-但set()不必保持订单

rows = [set(d.items()) for d in rows]
[
{('Invest', 'Y'), ('Exchange_Rate', 'Low'), ('Stock_Price', 'High')},   
{('Exchange_Rate', 'High'), ('Invest', 'N'), ('Stock_Price', 'High')},   
{('Invest', 'Y'), ('Stock_Price', 'Low'), ('Exchange_Rate', 'Low')}
]

完整的工作示例。我只使用io来模拟文件。

import csv
from pprint import pprint
text  ='''Stock_Price,Exchange_Rate,Invest
High,Low,Y
High,High,N
Low,Low,Y'''

import io
f = io.StringIO(text)
#f = open(filename)
reader = csv.DictReader(f)
rows = list(reader)
pprint(rows)
rows1 = [list(d.items()) for d in rows]
pprint(rows1)
rows2 = [set(d.items()) for d in rows]
pprint(rows2)

结果:

[{'Exchange_Rate': 'Low', 'Invest': 'Y', 'Stock_Price': 'High'},
{'Exchange_Rate': 'High', 'Invest': 'N', 'Stock_Price': 'High'},
{'Exchange_Rate': 'Low', 'Invest': 'Y', 'Stock_Price': 'Low'}]
[[('Stock_Price', 'High'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')],
[('Stock_Price', 'High'), ('Exchange_Rate', 'High'), ('Invest', 'N')],
[('Stock_Price', 'Low'), ('Exchange_Rate', 'Low'), ('Invest', 'Y')]]
[{('Invest', 'Y'), ('Exchange_Rate', 'Low'), ('Stock_Price', 'High')},
{('Exchange_Rate', 'High'), ('Invest', 'N'), ('Stock_Price', 'High')},
{('Invest', 'Y'), ('Stock_Price', 'Low'), ('Exchange_Rate', 'Low')}]

哦,很简单。使用Python中的csv库。

相关内容

  • 没有找到相关文章

最新更新