当前位置: 首页 > 知识库问答 >
问题:

熊猫:滚动第二大价值

马欣荣
2023-03-14

我需要得到df的滚动第二大值。

以获得最大的价值

max = df.sort_index(ascending=True).rolling(10).max()

当我尝试这个时,python抛出了一个错误

max = df.sort_index(ascending=True).rolling(10).nlargest(2)

AttributeError: 'Rolling' object has no attribute 'nlargest'

这是虫子吗?我还能用什么性能好的?

共有2个答案

羿易安
2023-03-14

使用np.sort降序并选择第二个值:

np.random.seed(2019)

df = pd.DataFrame({
    'B': np.random.randint(20, size=15)
})
print (df)
     B
0    8
1   18
2    5
3   15
4   12
5   10
6   16
7   16
8    7
9    5
10  19
11  12
12  16
13  18
14   5
a = df.rolling(10).apply(lambda x: -np.sort(-x)[1]) 
#alternative
#a = df.rolling(10).apply(lambda x: np.sort(x)[-2]) 
print (a)
       B
0    NaN
1    NaN
2    NaN
3    NaN
4    NaN
5    NaN
6    NaN
7    NaN
8    NaN
9   16.0
10  18.0
11  16.0
12  16.0
13  18.0
14  18.0
薛烨
2023-03-14

我会这样做:

df.rolling(10).apply(lambda x: pd.Series(x).nlargest(2).iloc[-1])
 类似资料:
  • 问题内容: 我正在做一些地理编码工作,我曾用它来屏幕刮取位置地址所需的xy坐标,我将xls文件导入了panda数据框,并希望使用显式循环来更新没有xy坐标的行,例如下面: 我已经阅读了为什么在遍历熊猫DataFrame之后该功能不能“使用”?并且完全意识到,iterrow仅提供给我们一个视图,而不是一个供编辑的副本,但是如果我真的要逐行更新值怎么办?是否可行? 问题答案: 您从中获得的行是不再连接

  • 问题内容: 我最终在写出这个问题的时候就弄清楚了,所以无论如何我都会发布并回答我自己的问题,以防别人需要一点帮助。 问题 假设我们有一个,包含该数据。 目标 对于每一行,将 其一个月*以内的每一行的总和相加,最好使用一种非常干净的语法。 * 我尝试过的 但这引发了异常 版: 问题答案: 使用偏移量而不是专门使用30天或大约一个月。 最初,我凭直觉跳了起来,使用了一个月,但现在很清楚为什么不起作用。

  • 我有一个数据帧,如: 所以我想通过两个“for循环”添加一些列,如: 新的类似数据帧的图片: 我的代码不起作用: 如何编写代码来获得像第二张图片这样的数据帧?

  • 首先,我对Python完全是新手,所以,也许是一些非常简单的事情我做得不对。 我正在读取一个多工作表xlsx文件,并将每个文件发送到单独的数据帧。(至少,我认为我正在这么做)。 这就是结果。 然后,我尝试打印每个df的一些列(手动尝试) 但我得到的只是: 正在显示任何值 如果我只调用,我会得到以下结果: 我做错了什么? 随着时间的推移,这是一项重大工作的一部分。我要做的就是过滤所有工作表的一些列,

  • 我正在读取一个包含多个datetime列的csv文件。我需要在读取文件时设置数据类型,但datetimes似乎是个问题。例如: 运行时出现错误: 不理解数据类型"datetime" 通过pandas在事实之后转换列。to_datetime()不是一个选项,我不知道哪些列将成为datetime对象。这些信息可以更改,并且来自于通知我的数据类型列表的任何信息。 或者,我尝试用numpy.genfrom

  • 问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为