【问题标题】:Fill 24 hours of data into five years of hourly dataframe将 24 小时的数据填充到五年的每小时数据框中
【发布时间】:2015-08-31 05:52:38
【问题描述】:

我有一个包含 5 年每小时数据的数据框。

import datetime as dt
StartDate = dt.date(2008,1,1)
EndDate = dt.date(2015,8,1)
dfIndex = pd.date_range(start=StartDate,end=EndDate,freq='H')
dfColumns = ['C1','C2','C2']
df = pd.DataFrame(index=dfIndex,columns=dfColumns)

我只有 24 小时的另一个数据框。

dfTemp = pd.DataFrame(np.random.randint(60,100,(24,3)),index=pd.date_range(StartDate,periods=24,freq='H'),columns='C1 C2 C3'.split())

我想用第二个数据帧中的数据填充第一个数据帧的每一天。而不是每天循环......有没有一种简单的方法来实现这一点?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    在 Python 中,您可以使用 * 运算符重复列表,例如

    print([1,2,3]*2)
    [1, 2, 3, 1, 2, 3]
    

    因此,对于您的示例,您可以重复您的示例数据 len(df)/24 次,并使用 iloc 将其设置到您的原始数据框中,(我不得不选择 iloc[:-1,:],因为您的索引实际上包含一个额外的时间点最后一天):

    df.iloc[:-1,:] = dfTemp.values.tolist()*(int(len(df)/24))
    df.head()
    Out[198]: 
                         C1  C2  C2
    2008-01-01 00:00:00  98  88  79
    2008-01-01 01:00:00  79  72  72
    2008-01-01 02:00:00  67  72  70
    2008-01-01 03:00:00  61  85  73
    2008-01-01 04:00:00  81  66  92
    

    【讨论】:

      【解决方案2】:

      试试这个

      df.combineAdd(dfTemp)
      

      但这只会填充您的情况下的第一天,而不是所有天,我不确定您是否要填充 df 中的所有数据框值,或者您是否只想填充两个数据中的匹配值帧,如果您只想匹配两个数据帧中的匹配索引,这将起作用。

      【讨论】:

      • 我想用 dfTemp 中的相同值填充所有的日子。
      猜你喜欢
      • 2022-11-11
      • 2019-12-29
      • 2019-12-01
      • 2021-02-20
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多