Почему я получаю другой размер группы, используя pandas groupby () с выбором столбца или без него? - PullRequest
2 голосов
/ 19 июня 2019

Я пытаюсь использовать numpy.size () для подсчета размера группы для панд из Dataframe groupby (), и я получаю странный результат.

>>> df=pd.DataFrame({'A':[1,1,2,2], 'B':[1,2,3,4],'C':[0.11,0.32,0.93,0.65],'D':["This","That","How","What"]})
>>> df
   A  B     C     D
0  1  1  0.11  This
1  1  2  0.32  That
2  2  3  0.93   How
3  2  4  0.65  What
>>> df.groupby('A',as_index=False).agg(np.size)
   A  B    C  D
0  1  2  2.0  2
1  2  2  2.0  2
>>> df.groupby('A',as_index=False)['C'].agg(np.size)
   A  C
0  1  8
1  2  8
>>> df.groupby('A',as_index=False)[['C']].agg(np.size)
   A    C
0  1  2.0
1  2  2.0
>>> grouped = df.groupby('A',as_index=False)
>>> grouped['C','D'].agg(np.size)
   A    C  D
0  1  2.0  2
1  2  2.0  2

В коде, если мы используемgroupby () после ['C'] , размер группы равен 8, равен правильному размеру группы * номер столбца, то есть 2 * 4;если мы используем groupby () в следующем столбце [['C']] или ['C', 'D'] , размер группы будет правильным.

Почему?

Кажется, что панды сначала пытаются выполнить агрегацию, а затем делают фактический выбор столбца.

1 Ответ

0 голосов
/ 19 июня 2019

Если вы хотите узнать размер группы, используйте один из них:

grouped.size()
grouped.agg("size)
len(grouped)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...