Вы можете использовать assign
, чтобы получить все в одной цепочке:
(
test.groupby("InvoiceDocNumber", as_index=False)
.itemprob.max()
.rename(columns={"itemprob":"invoiceprob"})
.assign(invoicerank = lambda x: x.invoiceprob.rank(ascending=False))
)
Вывод:
InvoiceDocNumber invoiceprob invoicerank
0 0 0.924193 5.0
1 1 0.974173 4.0
2 2 0.978962 3.0
3 3 0.992663 2.0
4 4 0.994243 1.0
Данные:
import numpy as np
import pandas as pd
n = 100
test = pd.DataFrame({"InvoiceDocNumber": np.random.choice(np.arange(5), size=n),
"itemprob": np.random.uniform(size=n)})