Как посчитать количество записей в группе и сохранить их в CSV-файл? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть набор данных, как показано ниже:

import  pandas as pd

dict = {"A":[1,1,1,1,5],"B":[1,1,2,4,1]}

dt = pd.DataFrame(data=dict)

, поэтому он выглядит следующим образом:

  A  B
  1  1
  1  1
  1  2
  1  4
  5  1

Мне нужно применить групповую операцию на основе A иB подсчитать, сколько записей в каждой группе?

Я применил приведенное ниже решение:

dtSize = dt.groupby(by=["A","B"], as_index=False).size()
dtSize.to_csv("./datasets/Final DT/dtSize.csv", sep=',', encoding='utf-8', index=False)

У меня 2 проблемы:

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

  2. , когдая печатаю окончательный dtSize, как показано ниже:

enter image description here

, поэтому некоторые подобные записи в A пропущены.

Вывод моего фаворита, как показано ниже в файле .csv

A  B   Number of elements in group
1  1    2
1  2    1
1  4    1
5  1    1

1 Ответ

4 голосов
/ 06 октября 2019

На самом деле, данные от A не отсутствуют. GroupBy.size возвращает серию, поэтому A и B используются как MultiIndex. Из-за этого повторяющиеся значения для A в первых трех строках не печатаются.

Вы близки. Вам необходимо сбросить индекс и, при необходимости, назвать результат:

dt.groupby(['A', 'B']).size().reset_index(name='Size')

Результат:

   A  B  Size
0  1  1     2
1  1  2     1
2  1  4     1
3  5  1     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...