2016-11-25 2 views
0

У меня есть dataframe 'xyz', и я хочу создать новый столбец на основе простого вычисления, но когда я запустил код ниже, результатом будет NaN.Создать колонку в пандах из агрегирования

хуг =

account_id date  
0 123  2016-01-01 
1 124  2016-01-01 
2 125  2016-01-01 
3 126  2016-01-01 
4 123  2016-01-02 
5 124  2016-01-02 
6 125  2016-01-02 
7 126  2016-01-02 

Новая колонка Я хочу создать: количество дней, когда у меня есть данные за ACCOUNT_ID.

код Я выполнения:

xyz['new_column'] = xyz.groupby('account_id').date.nunique() 

Результат я получаю:

account_id date   new_column 
0 123  2016-01-01  NaN 
1 124  2016-01-01  NaN 
2 125  2016-01-01  NaN 
3 126  2016-01-01  NaN 
4 123  2016-01-02  NaN 
5 124  2016-01-02  NaN 
6 125  2016-01-02  NaN 
7 126  2016-01-02  NaN 

Спасибо заранее!

ответ

1

Вы можете использовать transform:

xyz['new_column'] = xyz.groupby('account_id').date.transform('nunique') 
+0

Это именно то, что я искал! Спасибо, @Julien Спронк! – Levine

+0

@Levine Добро пожаловать :-) –

1

Вот альтернативное решение:

xyz['new_column'] = xyz.date.map(dict(xyz.date.value_counts())) 
+0

Спасибо, @AlexG. Я запустил это, но он подсчитал все экземпляры даты. Извиняюсь, если я сформулирую смущение. Мой желаемый результат состоит в том, чтобы иметь счет account_id за дату, но я отключил 'date' с 'account_id' и получил результат, который я искал. Благодаря! – Levine

+0

К сожалению, это моя ошибка. Cheers – AlexG

Смежные вопросы