假设,我有一个数据帧系列,其中包含一组递增的值和一组递减的值。(就像锯齿图案)。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
y = list(np.linspace(0, 1, 3)) + list(np.linspace(1,0, 11)) * 5
x = list(range(len(y)))
df = pd.DataFrame({"x": x, "y":y})
df.plot("x", "y")

现在,我想将这些向下滑动的部分提取出来,以分离dfs。做这件事最好的方法是什么?
我期望看到如下所示的dfs列表(图像显示第一个df的数据)
pd.DataFrame({"x": range(11), "y":list(np.linspace(1,0, 11))}).plot("x", "y")

发布于 2022-08-03 03:58:20
使用:
s = (df['y']-df['y'].shift(-1)>0)
t = s-s.shift(1)
u = t[t>=0].astype(int).cumsum()
u = u[u>0]
df.loc[u.index].groupby(u)['y'].apply(list)输出“
y
1 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.3999999999999...
2 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.3999999999999...
3 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.3999999999999...
4 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.3999999999999...
5 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.3999999999999...
Name: y, dtype: objecthttps://stackoverflow.com/questions/73215472
复制相似问题