Python 如何使用pd.concat在For循环中将多个数据帧合并在一起
我正在使用Dark Sky API和darkskylib库创建纽约市的年度、每小时预测 nyc.hourly返回一个包含所有天气数据的数据块,我可以从中调用未来24小时的温度 基本上,我的问题是,变量holding似乎并没有将两个日期的温度相加,而是返回最后一个日期。我想我所有的缩进都是对的,但也许不是Python 如何使用pd.concat在For循环中将多个数据帧合并在一起,python,python-3.x,pandas,concatenation,concat,Python,Python 3.x,Pandas,Concatenation,Concat,我正在使用Dark Sky API和darkskylib库创建纽约市的年度、每小时预测 nyc.hourly返回一个包含所有天气数据的数据块,我可以从中调用未来24小时的温度 基本上,我的问题是,变量holding似乎并没有将两个日期的温度相加,而是返回最后一个日期。我想我所有的缩进都是对的,但也许不是 import time import pandas as pd from darksky import forecast NYC = 'API Key',40.7128,-74.0060 f
import time
import pandas as pd
from darksky import forecast
NYC = 'API Key',40.7128,-74.0060
from datetime import date, timedelta, datetime
l = 2
for i in range(0,l):
nyc = forecast(*NYC, time=date_list[i])
nyc.refresh(units='si', extend='hourly')
# change units to SI units
n = len(nyc.hourly)
temp = []
unix_time = []
year = []
# create a list of hourly temperatures for the day in question
for i in range(0,n):
hourly_temp = nyc.hourly[i].temperature
temp.append(hourly_temp)
year.append(temp)
holding = pd.DataFrame(temp)
final = pd.concat([holding], ignore_index=True)
注;我在代码的开头定义了date_list,它有点长,但这是它返回的内容,它的条目是字符串
>>> date_list
['2016-01-01T00:00:00', '2016-01-02T00:00:00']
试试这个设置。您需要存储所有持有的数据帧,并在最后合并它们。字典是一种方便的方法
holding = {}
l = 2
for i in range(0, l):
# perform calculations
holding[i] = pd.DataFrame(temp)
final = pd.concat(list(holding.values()), ignore_index=True)
我不明白的是,我在嵌套for循环中做的事情与在较大的for循环中做的事情相同,它们似乎遵循相同的步骤。我对字典不太熟悉,但这似乎是一个很好的解决方案。我尝试过使用它,但是目前holding提供了一个包含一个条目的字典,而不是一个包含每天一个条目的字典。每个数据帧都需要一个唯一的索引。在本例中,我使用了
I
,但您需要确保每个数据帧都分配给一个唯一的键。我想您会这样做,我的想法是您将每个数据帧分配给日期列表中与其相关的日期。我该怎么做?或者,如果您能为我指出文档正确部分的方向,唯一标识符在您concat
之后并不重要。如果在日期列表中循环,可以这样做:对于idx,枚举(日期)
中的日期,然后使用idx
作为计数器。如果不需要唯一键,则使用列表而不是dict。然后在循环中追加dfs,在外部追加。