Pandas: извлечь верхние (n) значения из матрицы DataFrame - PullRequest
0 голосов
/ 06 мая 2020

Это проблема, которая возникла при вычислении частоты совпадения.

У меня есть Dataframe, матрица 884x884 с симметричными строками и столбцами.

Я бы хотел извлечь верхнюю часть 20 значений из элементов этой матрицы.

Однако, если я сортирую столбцы или строки, реагирует только один столбец или строки. пожалуйста, помогите мне

        alexa  actual  afford  alarm  alway  dot  ask  app  amazon
alexa       0       9       4      7      7   49   30   10      17
actual      9       0       2      2      1   26    6    1       0
afford      4       2       0      0      0    3    1    0       0
alarm       7       2       0      0      0   15   10    4       1
alway       7       1       0      0      0    3    0    4       0
dot        49      26       3     15      3    0   42   16      25
ask        30       6       1     10      0   42    0    6      11
app        10       1       0      4      4   16    6    0       6
amazon     17       0       0      1      0   25   11    6       0

это пример фрейма данных

может быть, я хочу извлечь верхнее 2 значение,

вывод: ((alexa, dot), 49), ( (точка, спросить), 42)

1 Ответ

1 голос
/ 06 мая 2020

Попробуй; хотя я уверен, что есть более элегантные способы сделать это sh.

Используя ваш DataFrame, как указано выше (называемое df):

import itertools
import pandas as pd

# Create a list of unique combinations (e.g. (alexa, actual)).
groups = list(itertools.combinations(df.columns, 2))

# Collect the count for each combination.
data = [('_'.join(group), df.loc[group]) for group in groups]

# Populate a new DataFrame with the counts and sort.
dfx = (pd.DataFrame(data, columns=['group', 'count'])
       .sort_values('count', ascending=False)
       .reset_index(drop=True))

# Display the top (n) values.
dfx.head(5)

Вывод:

        group  count
0   alexa_dot     49
1     dot_ask     42
2   alexa_ask     30
3  actual_dot     26
4  dot_amazon     25

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...