Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pd.concat在For循环中将多个数据帧合并在一起_Python_Python 3.x_Pandas_Concatenation_Concat - Fatal编程技术网

Python 如何使用pd.concat在For循环中将多个数据帧合并在一起

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

我正在使用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

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,在外部追加。