我有一个名为"投资者历史";。我想手动使用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库。