首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据单调递减的性质将DataFrame分解成多个DataFrames

根据单调递减的性质将DataFrame分解成多个DataFrames
EN

Stack Overflow用户
提问于 2022-08-03 01:46:03
回答 1查看 28关注 0票数 0

假设,我有一个数据帧系列,其中包含一组递增的值和一组递减的值。(就像锯齿图案)。

代码语言:javascript
复制
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的数据)

代码语言:javascript
复制
pd.DataFrame({"x": range(11), "y":list(np.linspace(1,0, 11))}).plot("x", "y")

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-03 03:58:20

使用:

代码语言:javascript
复制
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)

输出“

代码语言:javascript
复制
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: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73215472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档