我有一个类似索引的列,我想报告其值以反映滚动最小值.代码如下:

d = pd.DataFrame.from_dict({'ix':[0,1,2,3,4,5], 'val': [1,-2,5,4,9,6]})
d['first'] = d['val'].rolling(3).apply(lambda x: x.iloc[0] if not x.empty else None) 
d['min'] = d['val'].rolling(3).min()
d['ix_min'] = [np.nan, np.nan, 1, 1, 3, 3] # this is what I actually want to compute
print (d)

 val  first  min  ix_min
 0    1    NaN  NaN     NaN
 1   -2    NaN  NaN     NaN
 2    5    1.0 -2.0     1.0
 3    4   -2.0 -2.0     1.0
 4    9    5.0  4.0     3.0
 5    6    4.0  4.0     3.0

推荐答案

try :

d["ix_min"] = d["val"].rolling(3).apply(pd.Series.idxmin)
print(d)

输出:

   ix  val  ix_min
0   0    1     NaN
1   1   -2     NaN
2   2    5     1.0
3   3    4     1.0
4   4    9     3.0
5   5    6     3.0

编辑:假设您有这个相框:

   ix  val
0  10    1
1  20   -2
2  30    5
3  40    4
4  50    9
5  60    6

然后您可以做:

d["ix_min"] = d.set_index("ix")["val"].rolling(3).apply(pd.Series.idxmin).values
print(d)

输出:

   ix  val  ix_min
0  10    1     NaN
1  20   -2     NaN
2  30    5    20.0
3  40    4    20.0
4  50    9    40.0
5  60    6    40.0

Python相关问答推荐

为什么自定义pytree aux_data对于jnp.数组来说在.jit()之后跟踪,而对于np.数组来说则不是?

使用Python从HTTP打印值

带有Postgres的Flask-Data在调用少量API后崩溃

取相框中一列的第二位数字

调试回归无法解决我的问题

Flask:如何在完整路由代码执行之前返回验证

单击Python中的复选框后抓取数据

合并同名列,但一列为空,另一列包含值

覆盖Django rest响应,仅返回PK

Pydantic 2.7.0模型接受字符串日期时间或无

连接两个具有不同标题的收件箱

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

从groupby执行计算后创建新的子框架

如何在表中添加重复的列?

如何在Python中找到线性依赖mod 2

基于形状而非距离的两个numpy数组相似性

跳过嵌套JSON中的级别并转换为Pandas Rame

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

OpenCV轮廓.很难找到给定图像的所需轮廓