我正在从网站检索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])
谢谢!
解决方法:
如果使用字典会更好,也可以直接将网址传递给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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。