Панды: как мне векторизовать этот расчет цикла?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Панды: как мне векторизовать этот расчет цикла?

Сообщение Anonymous »

В настоящее время я применяю цикл for, приведенный ниже, к кадру данных pandas с полями pro, id и time. Как это векторизовать?
Детерминированный пример входных данных, созданный с помощью следующего кода:
import pandas as pd
import random

random.seed(0)
probs = [i / 10 for i in range(11)]
ids = [i for i in range(5)]
rowcounts = [i for i in range(2, 6)]
times = [i for i in range(14)]

example = []
for idn in ids:
rowcount = random.choice(rowcounts)
pvals = sorted(random.sample(probs, rowcount))
tvals = sorted(random.sample(times, rowcount))
for i in range(rowcount):
example.append([idn, pvals, tvals])
df = pd.DataFrame(example, columns=['id', 'prob', 'time'])

Далее следует циклический расчет. Ожидаемый результат векторизованного выражения такой же, как и при применении этого вычисления цикла к входным данным выше.
import numpy as np

data = []
for cutoff in np.sort(df['prob'].unique()):
# get subset of records where prob >= cutoff
sub = df[df['prob'] >= cutoff]
# from that subset, for each ID get the record with minimum prob
subsub = sub.loc[sub.groupby('id')['prob'].idxmin()]
# for those records, compute various statistics on the time field
times = subsub['time'].values
data.append([cutoff, np.quantile(times, 0.5), np.quantile(times, 0.9), (times

Подробнее здесь: https://stackoverflow.com/questions/786 ... alculation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»