Pandas:在一个扩张的风中提取最大值的指数

2024-09-27 09:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在pandas数据帧中,我可以创建一个序列B,使用另一个序列a的最大值,从第一行到当前行,方法是使用扩展窗口:

df['B'] = df['A'].expanding().max()

我还可以提取序列A的最大整体值的指数值:

^{pr2}$

我想要的是一种有效的方法将两者结合起来;也就是说,创建一个序列B,它保存从第一行到当前行的序列a的最大值的索引值。理想情况下,像这样的。。。在

df['B'] = df['A'].expanding().idxmax().value

…但是,当然,上面的操作失败了,因为Expanding对象没有idxmax。有没有直截了当的方法?在


编辑:为了便于说明,对于以下数据帧。。。在

df = pd.DataFrame([1, 2, 1, 3, 0], index=['a', 'b', 'c', 'd', 'e'], columns=['A'])

…我想创建一个额外的列B,以便DataFrame包含以下内容:

   A  B
a  1  a
b  2  b
c  1  b
d  3  d
e  0  d

Tags: 数据方法dataframepandasdfvalue情况序列
2条回答

似乎idmax是pandas最新版本中的一个函数,我还没有。这里有一个不涉及groupby或idmax的解决方案

import pandas as pd
import numpy as np
df = pd.DataFrame([1, 2, 1, 3, 0], index=['a', 'b', 'c', 'd', 'e'], columns=['A'])
temp = df.A.expanding().max()

df['B'] = temp.apply(lambda x: temp[temp == x].index[0])
df

    A   B
a   1   a
b   2   b
c   1   b
d   3   d
e   0   d

我相信您可以使用expanding+max+groupby

v = df.expanding().max().A
df['B'] = v.groupby(v).transform('idxmax')

df

   A  B
a  1  a
b  2  b
c  1  b
d  3  d
e  0  d

相关问题 更多 >

    热门问题