问题描述
所以我有代码按行获取最大绝对值的索引。我可以使用它来获取每行中前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 (将#修改为@)