生成多个 pandas 数据帧
generate multiple pandas data frames
我正在从一个网站检索多个 csv 格式的数据框。我将数据帧保存在一个空列表中,然后一个一个地读取。我无法将它们附加到单个数据框中,因为它们具有不同的列名和列顺序。所以我有以下问题:
我能否在用于读取文件的循环中创建一个具有不同名称的数据框,而不是将它们保存到列表中,而是为每个检索到的文件创建一个新的数据框?如果这不是 possible/recommendable 是否有办法迭代我的列表以提取数据帧?目前我当时阅读了一个数据框,但我很想想出一种方法来自动执行此代码以创建类似 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_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}
然后你可以像这样访问特定的DataFrame:
d['2012-4th-quarter']
遍历所有数据帧:
for period, df in d.items():
print period
print df
我正在从一个网站检索多个 csv 格式的数据框。我将数据帧保存在一个空列表中,然后一个一个地读取。我无法将它们附加到单个数据框中,因为它们具有不同的列名和列顺序。所以我有以下问题:
我能否在用于读取文件的循环中创建一个具有不同名称的数据框,而不是将它们保存到列表中,而是为每个检索到的文件创建一个新的数据框?如果这不是 possible/recommendable 是否有办法迭代我的列表以提取数据帧?目前我当时阅读了一个数据框,但我很想想出一种方法来自动执行此代码以创建类似 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_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}
然后你可以像这样访问特定的DataFrame:
d['2012-4th-quarter']
遍历所有数据帧:
for period, df in d.items():
print period
print df