Python 生成多个数据帧

Python 生成多个数据帧,python,python-2.7,pandas,dataframe,Python,Python 2.7,Pandas,Dataframe,我正在从网站检索csv格式的多个数据帧。我将数据帧保存在一个空列表中,然后逐个读取。我不能将它们附加到单个数据帧中,因为它们具有不同的列名和列顺序。因此,我有以下问题: 我是否可以在用于读取文件的循环中创建一个具有不同名称的数据帧,这样,我就可以为检索到的每个文件创建一个新的数据帧,而不是将它们保存到列表中?如果这是不可能的/建议的,是否有方法迭代我的列表以提取数据帧?目前我一次只读一个数据帧,但我很想想出一种方法来自动化这段代码,以创建类似data_1、data_2等的内容。目前我的代码并不非

我正在从网站检索csv格式的多个数据帧。我将数据帧保存在一个空列表中,然后逐个读取。我不能将它们附加到单个数据帧中,因为它们具有不同的列名和列顺序。因此,我有以下问题:

我是否可以在用于读取文件的循环中创建一个具有不同名称的数据帧,这样,我就可以为检索到的每个文件创建一个新的数据帧,而不是将它们保存到列表中?如果这是不可能的/建议的,是否有方法迭代我的列表以提取数据帧?目前我一次只读一个数据帧,但我很想想出一种方法来自动化这段代码,以创建类似data_1、data_2等的内容。目前我的代码并不非常耗时,因为我只有4个数据帧,但这可能会使更多的数据变得繁重。这是我的密码:

import pandas as pd
import urllib2
import csv

#we write the names of the files in a list so we can iterate to download the files
periods=['2012-1st-quarter','2012-2nd-quarter', '2012-3rd-quarter', '2012-4th-quarter']
general=[]
#we generate a loop to read the files from the capital bikeshare website
for i in periods:
    url = 'https://www.capitalbikeshare.com/assets/files/trip-history-data/'+i+'.csv'
    response = urllib2.urlopen(url)
    x=pd.read_csv(response)
    general.append(x)
q1=pd.DataFrame(general[0])

谢谢

如果您使用dict会更好,您还可以直接将url传递到
pandas.read\u csv
。因此,简化的代码如下所示:

import pandas as pd

periods = ['2012-1st-quarter','2012-2nd-quarter', '2012-3rd-quarter', '2012-4th-quarter']
url = 'https://www.capitalbikeshare.com/assets/files/trip-history-data/{}.csv'
d = {period: pd.read_csv(url.format(period)) for period in periods}
 d['2012-4th-quarter']
然后您可以访问特定的数据帧,如下所示:

import pandas as pd

periods = ['2012-1st-quarter','2012-2nd-quarter', '2012-3rd-quarter', '2012-4th-quarter']
url = 'https://www.capitalbikeshare.com/assets/files/trip-history-data/{}.csv'
d = {period: pd.read_csv(url.format(period)) for period in periods}
 d['2012-4th-quarter']
要遍历所有数据帧,请执行以下操作:

for period, df in d.items():
    print period
    print df

从技术上讲,这在代码中并没有错,尽管创建一个函数可以接受像
periods index
或name这样的参数,并且只在调用数据帧时返回数据帧,这可能会让您受益匪浅。这非常优雅,而且工作得非常完美。谢谢还有一个问题,既然我在dict中有了数据帧,有没有办法提取它们并同时重命名它们,生成类似df_1、df_2、df_3等的内容?你想重命名字典的键吗?重命名数据帧是什么意思?不,我需要操作数据帧,但要做到这一点,我从字典中提取它们,所以我想知道是否有一种方法可以一次提取所有数据帧。很抱歉,我仍然不明白,一次提取所有数据帧意味着什么?例如,要传递到数据帧,我需要执行以下操作:
df_1=pd.DataFrame(d['2012-4th-quarter']
这为我提供了所需的数据帧。我想知道是否有一种方法可以同时提取4个数据帧(并创建df_2、df_3等),因此我不必像dict中的元素那样多次重复该过程。