首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:为每一列获取最高的n个非NaN值以及这些值的索引。

:为每一列获取最高的n个非NaN值以及这些值的索引。
EN

Stack Overflow用户
提问于 2021-05-08 21:07:09
回答 1查看 224关注 0票数 0

我有一只熊猫的数据,价值来自多个地点,跨越许多天。

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame({'day': [1, 2, 3, 4, 5, 6],
                   'location-1': [10, 24, 24, 85, 90, np.NaN],
                   'location-2': [np.NaN, np.NaN, 45, 28, np.NaN, np.NaN]})
df.set_index('day', inplace=True)

我需要在每个位置得到4个最高值,以及它们发生的日子。NaN值需要放在最后。与…有关的东西:

代码语言:javascript
复制
result = pd.DataFrame({'location-1': [90, 85, 24, 24],
                       'location-2': [45, 29, np.NaN, np.NaN]})
result_days = pd.DataFrame({'location-1': [5, 4, 3, 2],
                            'location-2': [3, 4, 6, 5]})

我在这里找到了一个部分解决方案:Get top 4 biggest values from each column using Pandas in Python

但是该解决方案将NaN排序到顶部,我无法找到用于此的na_position选项。我看到了一些解决方案,然后手动将每个列的NaN循环到底部,但我之前并不知道哪些列包含NaN,而且还必须跟踪日期。我不能使用下拉列表,因为在另一个位置有NaN的当天,一个位置可能有重要的值。

我的问题是:

  1. 如何有效地对进行排序,并提取出最高的非NaN值?在排序之前,我可以破解它并将NaN替换为-999,但我想看看是否存在一个不依赖于我的数字高于某个值的假设的通用解决方案。
  2. 如何有效地为问题1中的值提取天数(或行指数)?可能会有重复的高值(如位置-1),为此,我需要在最近的一天前去。我已经看到了np.argsort和np.argpartition的一些解决方案,但我认为它们可能取决于这里如何处理NaN。

这是我第一次问问题,我很乐意澄清/改变任何事情。如果这是重复的话,很抱歉;我没有找到同样的情况。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-08 21:25:34

下面的循环将提供您所需的内容。您可以sort_values每个位置并将其分配给适当的resultresult_days

代码语言:javascript
复制
cols = ['location-1', 'location-2']
result = pd.DataFrame(columns=cols)
result_days  = pd.DataFrame(columns=cols)

for c in cols:
    tmp = df.sort_values(c, ascending=False).head(4)
    result[c] = tmp[c].values
    result_days[c] = tmp.index.values

print(result)
print(result_days)

   location-1  location-2
0        90.0        45.0
1        85.0        28.0
2        24.0         NaN
3        24.0         NaN
   location-1  location-2
0           5           3
1           4           4
2           2           1
3           3           2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67452157

复制
相关文章

相似问题

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