Подтвердить что ты не робот

Pandas groupby и qcut

Есть ли способ структурировать команды groupby и qcut для возврата одного столбца с вложенными фрагментами? В частности, предположим, что у меня есть 2 группы данных, и я хочу, чтобы qcut применялся к каждой группе, а затем возвращал вывод в один столбец. Это будет похоже на команду MS SQL Server ntile(), которая позволяет Partition by().

     A    B  C
0  foo  0.1  1
1  foo  0.5  2
2  foo  1.0  3
3  bar  0.1  1
4  bar  0.5  2
5  bar  1.0  3

В вышеприведенной части данных я хотел бы применить функцию qcut к B при разделении на A, чтобы вернуть C.

4b9b3361

Ответ 1

import pandas as pd
df = pd.DataFrame({'A':'foo foo foo bar bar bar'.split(),
                   'B':[0.1, 0.5, 1.0]*2})

df['C'] = df.groupby(['A'])['B'].transform(
                     lambda x: pd.qcut(x, 3, labels=range(1,4)))
print(df)

дает

     A    B  C
0  foo  0.1  1
1  foo  0.5  2
2  foo  1.0  3
3  bar  0.1  1
4  bar  0.5  2
5  bar  1.0  3