将列作为列表导入列标题变量

时间:2019-07-27 16:17:16

标签: python pandas

我有一个像这样的文件

AAPL, TSCO, ASDA, ....
10, 11, 12, ...
9, 10, 11, ...
...,...,...,...

现在有一种方法可以将所有这些列表作为其列标题的变量导入。它将是AAPL = [ 10, 9, ...,...]

我知道如何使用以下方法打印出列标题列表:

import pandas as pd
df = pd.read_csv('foo.csv', index_col=0)

col_headers = list(df.columns)

所以现在我可以遍历此列表,但是有一种方法可以自动将变量名分配为列表标题?

2 个答案:

答案 0 :(得分:3)

最好的方法是创建列表字典,并为每个列表选择键-在此按列名称选择:

d = df.to_dict('list')
print (d)
{'AAPL': [10, 9], 'TSCO': [11, 10], 'ASDA': [12, 11]}

print (d['AAPL'])
[10, 9]

print (type(d['AAPL']))
<class 'list'>

您可能需要什么,但recommended却没有:

for c in df.columns:
    globals()[c] =  df[c].tolist()

print (AAPL)
[10, 9]

答案 1 :(得分:0)

这是不需要pandas的解决方案。

import csv

class MyTable:

    def __init__(self, filename):
        with open(filename, newline='') as csvfile:
            reader = csv.DictReader(csvfile)
            self.data = [row for row in reader]

    def column(self, key, cast_as = str):
        return sorted([
                cast_as(value[key]) 
                for value in self.data
            ])

# usage:
>>> dataset = MyTable("foo.csv")
>>> aapl = dataset.column('AAPL', float)
>>> print(aapl)
[10., 9.]