Как выбрать процент строк в кадре данных панд - PullRequest
0 голосов
/ 31 мая 2018

В Python у меня есть несколько структур данных, структурированных так:

0 0 0 0
1 1 1 1
2 2 2 2
. . . .
n n n n

Как выбрать средние 33% строк (определяется по индексу, а не по значению)?

Вот то, что я попытался:

df.iloc[int(len(df)*0.33):int(len(df)*0.66)]

Это работает, но кажется действительно грязным, не говоря уже о вынужденных целых.

Мне было интересно, есть ли более чистый способ выборапроцентное соотношение данных, поскольку до сих пор я не смог найти никаких полезных команд в документации.

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Напишите функцию для выполнения вашей задачи, например

def get_middle(df,percent):

    start = int(len(df)*percent)
    end = len(df) - start

    return df.iloc[start:end]

get_middle(df,0.33)
0 голосов
/ 31 мая 2018

Вы также можете использовать функцию numpy процентиля для индекса.Этот метод также работает, когда ваш индекс не начинается с нуля.

df[(df.index>np.percentile(df.index, 33)) & (df.index<=np.percentile(df.index, 66))]
0 голосов
/ 31 мая 2018

Для этого вам нужно «поиграть» с числами и определить, какие индексы вы хотите:

df.iloc[(len(df)// 3) : (len(df) - len(df)// 3), :]

или

df.iloc[(len(df)// 3) : (len(df)// 3 * 2), :]

. В этих примерах я определяюинтервал, а именно (len(df.index)// 3) : (len(df.index)// 3 * 2), который вырезает строки информационного кадра, составляющие от 1/3 до 2/3 таблицы.

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