Добавление нового столбца из агрегированного через .loc возвращает NaN - PullRequest
0 голосов
/ 16 мая 2019

Мне трудно понять, почему мой код не работает должным образом.

У меня есть структурированное datafame: Снимок экрана с данными (Извините, у меня недостаточно высокой репутации для публикации изображений)

И я агрегирую следующим образом, чтобы получить сумму testBytes:

aggregation = {'testBytes' : ['sum']}
tests_DL_groupped = tests_DL_short.groupby(['measDay','_p_live','_p_compositeId','Latitude','Longitude','testType']).agg(aggregation).reset_index()

А теперь актуальный вопрос , почему этот код не работает должным образом, производя NaN:

tests_DL_groupped.loc[:,'testMBytes'] = tests_DL_groupped['testBytes']/1000/1000

не работает

пока это работает нормально :

tests_DL_groupped['testMBytes'] = tests_DL_groupped['testBytes']/1000/1000

рабочий

и какой должен быть предпочтительный способ сделать это пандами ...

Большое спасибо!

1 Ответ

0 голосов
/ 16 мая 2019

В столбцах есть проблема MultiIndex.

Решение - это изменение:

aggregation = {'testBytes' : ['sum']}

до:

aggregation = {'testBytes' : 'sum'}

чтобы избежать этого.

Или используйте GroupBy.sum:

cols = ['measDay','_p_live','_p_compositeId','Latitude','Longitude','testType']
tests_DL_groupped = tests_DL_short.groupby(cols)['testBytes'].sum().reset_index()

tests_DL_groupped = tests_DL_short.groupby(cols, as_index=False)['testBytes'].sum()
...