Использование transform вместе с nth - PullRequest
2 голосов
/ 28 апреля 2019

Я добавляю столбец с transform со следующим кодом:

df['new_date'] = df.groupby('account')['date'].transform('last')

Это работает нормально, однако по умолчанию оно падает NaN с (как описано в существующих ошибках здесь , здесь и здесь ), что я бы хотел бы сохранить. Разработчики предлагают использовать nth(-1) вместо этого. Нет проблем!

Однако я не могу понять, как использовать его с transform. Сообщение об ошибке для

`df.groupby('a')['b'].transform('nth')`

- это nth() missing 1 required positional argument: 'n', что, кажется, дразнит насчет предположения о том, что transform распознает метод, пока я могу найти способ передать ему индекс. Но ни один из

df.groupby('a')['b'].transform('nth(-1)')
df.groupby('a')['b'].transform('nth'(-1))
df.groupby('a')['b'].transform('nth')(-1)

работа. Есть ли способ сделать это?

1 Ответ

3 голосов
/ 28 апреля 2019

Здесь можно использовать второй аргумент для значения, переданного GroupBy.nth:

np.random.seed(2015)

df = pd.DataFrame({'account': ['foo', 'bar', 'baz'] * 3,
                   'val': np.random.choice([np.nan, 1],size=9)})
#print (df)

df['val1'] = df.groupby('account')['val'].transform('last')
df['val2'] = df.groupby('account')['val'].transform('nth', -1)
print (df)
  account  val  val1  val2
0     foo  NaN   1.0   1.0
1     bar  NaN   1.0   NaN
2     baz  NaN   NaN   NaN
3     foo  NaN   1.0   1.0
4     bar  1.0   1.0   NaN
5     baz  NaN   NaN   NaN
6     foo  1.0   1.0   1.0
7     bar  NaN   1.0   NaN
8     baz  NaN   NaN   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...