。max()中的值作为Python中的新数据框

问题描述 投票:0回答:1

我有一些10Hz GPS数据,从中我添加了一些滚动的.sum()列,例如下面的内容

resultsQ1['5s']=resultsQ1['OdChange'].rolling(window=50,axis=0).sum()

然后我在新列中标识了最大值,而从另一个列进行分组,例如下面

combinedQ15s = resultsQ1.groupby('Stat5s')['5s'].max()/5

我现在要做的是将构成.max()值的50个值作为新的df返回

这可能吗?

python python-3.x pandas
1个回答
0
投票

尝试:

res=resultsQ1.merge(resultsQ1.groupby('Stat5s')['5s'].max(), right_index=True, left_on="Stat5s", suffixes=["", "_max"])

res=res.loc[res["5s_max"]==res["5s"]]

#so you can differentiate the final result from records that make it up:
res["cat"]="total"+res.assign(dummy=1)["dummy"].cumsum().map(str)
res2=res
for el in res.index:
    order=list(df.index).index(el)
    dftemp=resultsQ1.iloc[order-49:order].copy()
    dftemp["cat"]=res.loc[el, "cat"].replace("total", "makeup")
    res2=res2.append(dftemp, ignore_index=True)

([res2是您的输出)一些参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

© www.soinside.com 2019 - 2024. All rights reserved.