Python 将CSV文件导入列表,使用文件名作为标识符
谢谢你帮我澄清我的问题。下面是两组代码 首先从在线数据源中检索数据,在下面的输出示例中添加股票符号作为标识符,“AA”,并用下载的数据创建列表,效果非常好Python 将CSV文件导入列表,使用文件名作为标识符,python,list,csv,pandas,Python,List,Csv,Pandas,谢谢你帮我澄清我的问题。下面是两组代码 首先从在线数据源中检索数据,在下面的输出示例中添加股票符号作为标识符,“AA”,并用下载的数据创建列表,效果非常好 stocks = ['AA', 'AAPL', 'IBM'] start = datetime(1990, 1, 1) end = datetime.today() data = {} for stock in stocks: print stock stkd = DataReader(stock, 'yahoo', start, end)
stocks = ['AA', 'AAPL', 'IBM']
start = datetime(1990, 1, 1)
end = datetime.today()
data = {}
for stock in stocks:
print stock
stkd = DataReader(stock, 'yahoo', start, end).sort_index()
data[stock] = stkd
Output:
**{'AA':** OPEN HIGH LOW CLOSE VOLUME
Date
1990-01-02 75.00 75.62 74.25 75.62 4039200
1990-01-03 76.00 76.75 76.00 76.75 7332000
第二步读取CSV文件并创建列表,很好,目标是添加标识符(使用CSV文件名),类似于上面的代码,在导入数据并创建列表时
CSV读取的代码
path =r'C:\Users\Data'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list = []
for file in allFiles:
df = pd.read_csv(file, index_col=0)
list.append(df)
frame = pd.concat(list)
Current Output:
[ Time Open High Low Close Vol OI
Date
12/17/1984 11:15 817.75 820.25 817.00 820.25 73445 309260
12/18/1984 11:15 820.25 821.00 818.50 819.25 87505 308240
Desired Output:
{'XX': Time Open High Low Close Vol OI
Date
12/17/1984 11:15 817.75 820.25 817.00 820.25 73445 309260
12/18/1984 11:15 820.25 821.00 818.50 819.25 87505 308240
要读取XX.csv,为传入值创建XX标识符,然后在一个组合列表或面板中使用YY.csv、GG.csv重复此过程
我尝试了很多事情,但运气不好,我对python还不熟悉,但由于Stackoverflow和类似的网站,我相处得相当好
CSV文件格式
Date,Time,Open,High,Low,Close,Vol,OI
12/17/1984,11:15,817.75,820.25,817,820.25,73445,309260
12/18/1984,11:15,820.25,821,818.5,819.25,87505,308240
您可以在创建列表后添加CSV文件名。 在for循环之后和定义frame之前,将左括号(“[”)替换为所需内容 因此…(注第4行) 我并不是说这是最干净的方式,但它会起作用。我也不确定你说的关于将“[”更改为“{”的内容,但这种更改不是必需的(当然你可以)
祝您好运!在第一种情况下,您看到的输出是带有字符串键和数据帧值的。一个简单的示例:
import pandas
data = {}
for key in ['A', 'B', 'C']:
data[key] = pandas.DataFrame({'Column': [1]})
print data
输出:
{'A': Column
0 1, 'B': Column
0 1, 'C': Column
0 1}
[ Column
0 1, Column
0 1, Column
0 1]
在第二种情况下,您使用的是。仅供将来参考,不应使用名称list
,因为它会隐藏内置的列表构造函数
我以前的例子可以用列表重做:
data = []
for key in ['A', 'B', 'C']:
data.append(pandas.DataFrame({'Column': [1]}))
print data
输出:
{'A': Column
0 1, 'B': Column
0 1, 'C': Column
0 1}
[ Column
0 1, Column
0 1, Column
0 1]
因此,为了匹配您的第一个案例,您应该为CSV文件使用字典,而不是列表,如下所示:
data={}#注意,我已经将list改为data,并使用了{}而不是[]
对于所有文件中的文件:
df=pd.read\u csv(文件,索引\u col=0)
data[file]=df#这里我改变了添加数据的方式感谢您的回复。例如,“XX”是CSV文件名(XX.CSV),以及其他几个文件,比如YY.CSV、GG.CSV等。感谢您的回复。例如,“XX”是CSV文件名(XX.CSV),以及其他几个文件,如YY.csv、GG.csv等。希望读取XX.csv,为传入值创建XX标识符,然后使用YY.csv、GG.csv重复此过程,将其合并到一个列表或面板中。感谢您帮助我澄清我的问题。@Benji如果您仔细查看OP发布的代码,输出不是包含ins“[”而是在显示列表时显示“[”,因此此方法根本不起作用。