我有一个数据帧BaseResult,它包含41年的每日温度数据(41行x 365列),其中行表示年,列表示天。我希望将以每天为中心的每5列合并成一个长列,这样我就有了一个新的数据帧RollingPercentile,即(200行x 365列)。在这里,Jan 03的列将包含Jan 01-05的数据,Jan 04的列将包含Jan 02-06的数据,等等。到目前为止,我只能水平合并列,即一列中有3个值,而不是具有3倍数据的较长列。
source_col_loc=BaseResult.columns.get_loc('01-01')
BaseResult['01-01']=BaseResult.iloc[:,source_col_loc+1:source_col_loc+4].apply(
lambda x: ",".join(x.astype(str)),axis=1)我如何做到这一点,以便它们垂直合并,以便我可以迭代整个数据帧?我的最终目标是计算每列的第90个百分位数,该列包含以Percentile90=RollingPercentile.percentile(0.9)索引的日期为中心的5天数据,这样我就得到了一个由365个值组成的数组。
发布于 2021-11-15 17:05:30
使用windows执行计算
滚动百分位数对多行数据进行聚合以获得一个值。
df.rolling(window=window, min_periods=min_periods).quantile(perc)
df.rolling(window=window, min_periods=min_periods).mean()
df.rolling(window=window, min_periods=min_periods).std()
df1.rolling(window=window, min_periods=min_periods).apply(lambda x:
stats.linregress(x, df2), raw=False)这些是您可以应用的滚动聚合的一些窗口和类型
https://stackoverflow.com/questions/69978101
复制相似问题