Я пытаюсь сэмплировать DataFrame для панд на основе словаря и определенного столбца.Таким образом, для каждого значения столбца y
я точно знаю, сколько наблюдений я бы хотел выбрать.
Я могу сделать это с помощью комбо groupby
apply
, например:
import pandas as pd
df = pd.DataFrame({'y': [2,2,0,0,0,1,1,1,1,1], 'x': 1, 'z': 2})
y x z
0 2 1 2
1 2 1 2
2 0 1 2
3 0 1 2
4 0 1 2
5 1 1 2
sizes = {0: 2, 1: 1, 2:1}
df.groupby('y').apply(lambda x: x.sample(sizes[x['y'].values[0]]))
yyxz
0 2 0 1 2 4 0 1 2 1 5 1 1 2 2 0 2 1 2
Однако, если я сделаю unique
вместо values
(которыйдолжно быть эквивалентно, я получаю странную KeyError: 'y'
ошибку на фрейме данных:
df.groupby('y').apply(lambda x: x.sample(sizes[x.y.unique()[0]]))
Может кто-нибудь объяснить, почему это происходит?
РЕДАКТИРОВАТЬ:
Это произошло на0.23.1
но не на 0.23.1
, так что это, вероятно, ошибка.