如何使用pd.concat在For循环中将多个DataFrame合并在一起

时间:2018-02-09 11:04:27

标签: python python-3.x pandas concatenation concat

我正在使用Dark Sky API和darkskylib库为纽约市创建每年每小时的预测。

nyc.hourly返回一个包含所有天气数据的DataBlock,我可以在接下来的24小时内调用温度。

基本上,我的问题是变量保持似乎没有将两个日期的温度加在一起,而只是返回最后一个。我认为我的所有缩进都是正确的,但也许不是。

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']

1 个答案:

答案 0 :(得分:1)

尝试此设置。您需要存储所有holding数据框并在最后组合它们。字典是一种方便的方法。

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)