2016-10-31 1 views
0

у меня есть панды GroupBy объект:отсутствует ключевой столбец в результатах панды GroupBy фильтра

routeGroups = tracking.groupby(tracking.columns[0]) 

Тогда я применяю фильтр:

filterFunc = lambda x: np.any(np.isfinite(x['LAT'])) 
results = routeGroups.filter(filterFunc) 

results является dataframe, но столбец, используемый для создания группа в tracking.columns[0] отсутствует в фрейме данных.

Это поведение кажется непоследовательным .. иногда его не хватает, а иногда и нет. Я не уверен, что происходит, или какая работа может быть.

+0

Ответ ниже применим при выполнении агрегации по группам. Я не могу воспроизвести ваше поведение при фильтрации. Можете ли вы опубликовать рабочий пример? –

+0

Я не могу поделиться данными. Я могу выполнить 'routeGroups.sum()' и видеть, что этот индекс является «НОМЕР ПЕРЕСЫЛКИ» (который является столбцом I, сгруппированным по). Но когда я пытаюсь этот фильтр: 'FilterFunc = лямбда х: np.any (np.isfinite (х [nanCol]))' ' tntFiltered = (routes.filter (FilterFunc))' ' tntFiltered' не есть эта колонка. Я отправлю ответ здесь, если выясню, почему это происходит. – BrainPermafrost

ответ

0

При выполнении агрегации столбец, используемый для группировки, будет иметь индекс results.

Чтобы избежать этого вы можете либо

  1. проход as_index=False к groupby функции (routeGroups = tracking.groupby(tracking.columns[0],as_index=False)
  2. использования results.reset_index()

для фильтрации, по умолчанию, кажется, чтобы держать колонку (см. комментарий).

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