В настоящее время я применяю цикл 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
Панды: как мне векторизовать этот расчет цикла? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение