Как я могу получить максимальное (x) количество значений из каждого столбца в кадре данных Pandas, сохраняя при этом индекс для каждого? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь получить верхние х самых больших значений из каждого столбца в кадре данных pandas.Каждый столбец представляет собой одну дату, в то время как каждая строка представляет собой отдельный тикер (см. Фото)

В идеале я хотел бы видеть тикер и номер 5 лучших для каждой даты (столбец)

Я пробовал несколько разных итераторов, но ни один не работал и сохранил индекс.

Вывод, который я хочу получить, - это новый CSV с датой и пятью основными биржевыми индексами (индекс), основанными на их значении в столбце в тот день.

импорт панд в виде pd

df = pd.read_csv (см. Фото)

Не удалось заставить его повернуть направо. введите описание изображенияздесь

1 Ответ

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

Применить pd.Series.nlargest к каждому столбцу, чтобы замаскировать все, кроме верхних N значений.Затем unstack и удалите NaN.Я буду использовать верхние 2 значения здесь для иллюстрации.

Пример данных

import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame(np.random.normal(0, 10, (4, 3)), 
                  columns=['Date1', 'Date2', 'Date3'], 
                  index=['Stock1', 'Stock2', 'Stock3', 'Stock4'])
#            Date1     Date2     Date3
#Stock1   4.967142 -1.382643  6.476885
#Stock2  15.230299 -2.341534 -2.341370
#Stock3  15.792128  7.674347 -4.694744
#Stock4   5.425600 -4.634177 -4.657298

Код

df.apply(pd.Series.nlargest, n=2).unstack().dropna()

#Date1  Stock2    15.230299
#       Stock3    15.792128
#Date2  Stock1    -1.382643
#       Stock3     7.674347
#Date3  Stock1     6.476885
#       Stock2    -2.341370
#dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...