因此,我有一个数据框架,如下所示:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([[1, 2, 3, 3, 2, 1], [4, 3, 6, 6 ,3 ,4], [7, 2, 9, 9, 2, 7]]),
                   columns=['a', 'b', 'c', 'a_select','b_select','c_select'])

df

现在,我可能需要重新组织数据帧(或使用两个)来实现这一点,但是...

我想从每行的每个"\u select"列中 Select 2个最大值,然后用它来表示相应的列.

例如,第1行表示a&中的值;b、 第2行a和;c(不是我们正在查看的\u select列中的值).

目前,我只是迭代每一行,因为这看起来很简单,但对于大型数据集来说速度很慢,但是我不知道如何使用apply或lambda函数来进行等价(或者如果可能的话).

推荐答案

使用nlargest的简单oneliner

>>> df.filter(like='select').apply(lambda s: s.nlargest(2), 1).mean(1)

对于性能,numpy可能是有用的:

>>> np.sort(df.filter(like='select').to_numpy(), 1)[:, -2:].mean(1)

要从第一列中获取值,请使用argsort

>>> arr = df.filter(like='select').to_numpy()
>>> df[['a', 'b', 'c']].to_numpy()[[[x] for x in np.arange(len(arr))], 
np.argsort(arr, 1)][:, -2:].mean(1)

array([1.5, 5. , 8. ])

Python相关问答推荐

将两只Pandas rame乘以指数

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

PyQt5,如何使每个对象的 colored颜色 不同?'

Pandas:将多级列名改为一级

Stacked bar chart from billrame

海上重叠直方图

在pandas中使用group_by,但有条件

使用Python从URL下载Excel文件

matplotlib图中的复杂箭头形状

导入错误:无法导入名称';操作';

交替字符串位置的正则表达式

高效生成累积式三角矩阵

对当前的鼹鼠进行编码,并且我的按键获得了注册

Pandas 数据框自定义排序功能

使用Django标签显示信息

Django-修改后的管理表单返回对象而不是文本

以元组为索引的Numpy多维索引

Parsel无法访问嵌套元素

如何计算二十面体每条三角形边的中点

用考克斯回归的生存分析系列的真值是模棱两可的.