Есть ли способ перебрать столбец в Pandas, чтобы найти соответствующие значения индекса из другого кадра данных? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть два кадра данных, df_diff и df_three. Для каждого столбца df_three он содержит значения индекса трех самых больших значений из каждого столбца df_diff. Например, скажем, df_diff выглядит так:

     A    B    C
  0  4    7    8
  1  5    5    7
  2  8    2    1
  3  10   3    4
  4  1    12   3

Использование

df_three = df_diff.apply(lambda s: pd.Series(s.nlargest(3).index))

df_three будет выглядеть так:

     A    B    C
  0  3    4    0
  1  2    0    1
  2  1    1    3

Как я могу сопоставить значения индекса в df_three со значениями столбца df_diff?
Другими словами, как я могу заставить df_three выглядеть так:

     A     B    C
  0  10   12    8
  1   8    7    7
  2   5    5    4

Я делаю эту проблему слишком сложной? Был бы более легкий путь?
Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Использовать numpy.sort со значениями кадра данных:

n=3
arr = df.copy().to_numpy()

df_three = pd.DataFrame(np.sort(arr, 0)[::-1][:n], columns=df.columns)

print(df_three)
    A   B  C
0  10  12  8
1   8   7  7
2   5   5  4
0 голосов
/ 02 июля 2019
def top_3(s, top_values):
    res = s.sort_values(ascending=False)[:top_values] 
    res.index = range(top_values)
    return res

res = df.apply(lambda x: top_3(x, 3))
print(res)

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