使用索引的二维数组从数据框中选择值?

问题描述

所以我有代码按行获取最大绝对值的索引。我可以使用它来获取每行中前3个值的列名。但是我一直在坚持如何获取每一行的实际值(感觉应该很容易)。

from sklearn import datasets

data = datasets.make_classification(n_features = 7,n_informative = 5,n_redundant = 2,n_samples= 1000,random_state = 3)
df = pd.DataFrame(data[0])
df.columns = ['a','b','c','d','e','f','g']

接下来,我将获得每行中前3个绝对值的索引

ix = np.argsort(-np.abs(df.values),axis=1)[:,:3]

> ix
array([[1,3,4],[3,1,2],[6,5,1],...,[0,2,5],[2,4,3],[5,2]])

我可以用它来获取按行排在前三列的数据框

df_max = pd.DataFrame(df.columns.values[np.argsort(-np.abs(df.values),:3]],columns = ['1st Max','2nd Max','3rd Max']).reset_index(drop = True)

> df_max.head()

    1st 2nd 3rd
0   b   d   e
1   d   b   c
2   g   f   b
3   d   e   b
4   a   d   c

现在如何从df中获取相应的值?我试过df.iloc [ix]和df.values [ix]都没有产生所需的输出(与df_max相同,但实际值相同)...如何实现此目的?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)