我可能需要延长我的问题...

我有一些相关矩阵可以使用(见下面的例子,但是想想几千个"Ref"列.

              Ref_1          Ref_2
Base_1        0.021088       0.022260   
Base_2        0.022539       0.023792   
Base_3        0.026193       0.027648   
Base_4        0.027209       0.028721   
Base_5        0.000000       0.000000   
Base_6        0.000000       0.000000   

我用以下代码提取了顶值:

data = []

for row_index, row in similarity_df.iterrows():
    max_sim = row.max()
    max_sim_col = row.idxmax()
    data.append([row_index, max_sim_col, max_sim])

result_df = pd.DataFrame(data, columns=['Base', 'Ref', 'Score'])

一切都很好,而且还在工作.

Base       Ref      Score
Base_1     Ref_2    0.022260
Base_2     Ref_2    0.023792

但我需要提取每个Base的"Top10"Ref值,并使它们在数据帧或类似的东西中可读.

Base       1_Ref    1_Score     2_Ref    2_Score     3_Ref   3_Score    etc...
Base_1     Ref_2    0.022260    Ref_1    0.021088    ...
Base_2     Ref_2    0.023792    Ref_1    0.022539    ...

我try 了堆叠,但没有得到预期的结果. 有什么 idea 吗?

推荐答案

你可以用stacksort_values,然后用pivotgroupby.cumcountreshape :

N = 10

out = (df
   .rename_axis(columns='Ref')
   .stack().sort_values(ascending=False)
   .reset_index(name='Score')
  # .groupby(level=0).head(N)
   .assign(n=lambda d: d.groupby('level_0').cumcount()+1)
   .pivot(index='level_0', columns='n')
   .sort_index(level='n', axis=1)
   .rename_axis(index=None)
)

out.columns = out.columns.map(lambda x: f'{x[1]}_{x[0]}')

NB. To limit the number of top values, uncomment the 100 line.

输出:

        1_Ref   1_Score  2_Ref   2_Score
Base_1  Ref_2  0.022260  Ref_1  0.021088
Base_2  Ref_2  0.023792  Ref_1  0.022539
Base_3  Ref_2  0.027648  Ref_1  0.026193
Base_4  Ref_2  0.028721  Ref_1  0.027209
Base_5  Ref_1  0.000000  Ref_2  0.000000
Base_6  Ref_1  0.000000  Ref_2  0.000000

Python相关问答推荐

调查TensorFlow和PyTorch性能的差异

Plotly Dash函数来切换图形参数-pPython

使用pandas MultiIndex进行不连续 Select

为什么我的主页不会重定向到详细视图(Django)

如何使用函数正确索引收件箱?

Pandas 群内滚动总和

遵循轮廓中对象方向的计算线

使文本输入中的文本与标签中的文本相同

如何使用stride_tricks.as_strided逆转NumPy数组

有症状地 destruct 了Python中的regex?

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

如何在Python数据框架中加速序列的符号化

当独立的网络调用不应该互相阻塞时,'

运输问题分支定界法&

基于索引值的Pandas DataFrame条件填充

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

把一个pandas文件夹从juyter笔记本放到堆栈溢出问题中的最快方法?

如何使用Numpy. stracards重新编写滚动和?

如何排除prefecture_related中查询集为空的实例?