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

2024-09-24 22:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的文件

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)

所以现在我可以循环这个列表,但是有没有办法,自动将变量名指定为列表头?你知道吗


Tags: 文件csv方法import标题pandasdf列表
2条回答

这里最好的方法是创建列表并为每个列表按键选择-此处按列名:

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]

这是一个不需要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.]

相关问题 更多 >