在Pandas中创建新的 Dataframe ,将每小时数据和每小时温度读数扩展到每刻钟间隔

7ajki6be  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(166)

编辑:我想通了:
df_天气_测试= df_天气
您pd.to:
如果您的输入是“日期时间”,请输入“平均值”。
我有一个以小时为时间间隔的数据集,每个小时都包含自己的温度阅读。出于项目的目的,我希望将时间间隔更改为1/4小时,并将温度设置为从基准小时1到基准小时2之间的估计读数。
例如,我有这样的:
日期_时间。温度[°C]
2018年01月01日01:00:00第10页
2018年01月01日12时00分
我想要一个新的 Dataframe ,看起来像这样:
日期_时间。温度[°C]
2018年01月01日01:00:00第10页
2018年01月01日01:15:00. 10点5分
2018年01月01日01:30:00第11页
2018年01月01日01:45:00 11点5分
2018年01月01日12时00分
如何每小时增加额外的三行,然后使每行分别为基础温度加上每小时总温度变化的25%、50%和75%?
我知道我可以使用它在 Dataframe 的给定位置插入一行:
[1.5] =['时间','旧临时表','新临时表']
如果是,则将该值设置为“0”。
我是否需要一个循环,从原始 Dataframe 的第1行开始,取第1行到第0行的温差,除以4,然后将该值添加到 Dataframe 中新插入的列,将该值 * 2添加到 Dataframe 中第二个插入的列,将该值 *3添加到 Dataframe 中第三个插入的列?
有人知道那会是什么样子吗?
我尝试了上面的方法(插入 Dataframe ,然后手动添加值),但是我不确定如何将其用于整个5000多行的数据集。

xzv2uavs

xzv2uavs1#

# create the dataframe
index = pd.date_range('1/1/2018', periods=9, freq='H')
series = pd.Series([10,12,13,14,14,15,14,13,12], index=index)
df = pd.DataFrame(series, columns=['Temp'])
# shift the Temp column
df['shifted'] = df.Temp.shift(-1)
df.shifted = df.shifted.ffill()
# a function to fill the values in between intervals
def fill_temp(x):
    diff = x.shifted - x.Temp
    if x['index'].minute == 15:
        temp = x.Temp + .25 * diff
    elif x['index'].minute == 30:
        temp = x.Temp + .5 * diff
    elif x['index'].minute == 45:
        temp = x.Temp + .75 * diff
    else:
        temp = x.Temp
    return temp

# do a resample
df_resampled = df.resample('.25H').ffill().reset_index()
# apply the function to modify the values and add them into a new column
df_resampled['Temperature'] = df_resampled.apply(fill_temp, axis=1)

df_resampled = df_resampled[['index','Temperature']].rename(columns={'index':'DateTime'})
print (df_resampled)

相关问题