Учитывая этот кадр данных:

df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])

Я могу использовать groupby, чтобы показать размер группы комбинаций:

df.groupby(['A','B']).size()

A  B
1  2    1
   3    1
4  6    1

Как я могу объединить уникальные значения B в список, а также отобразить размер A, как это?

A  B
1  2,3  2
4  6    1
1
sparrow 23 Окт 2018 в 21:09

2 ответа

Лучший ответ

Использование:

df['B'].astype(str).groupby(df['A']).agg([','.join,'size'])
Out[134]: 
  join  size
A           
1  2,3     2
4    6     1
2
YOBEN_S 23 Окт 2018 в 18:15

Сгруппируйте только по A и используйте .agg, указав словарь для каждого столбца.

df.groupby('A').agg({'B': list, 'A': 'size'}).rename(columns={'A': 'Size'})

        B  Size
A              
1  [2, 3]     2
4     [6]     1
1
ALollz 23 Окт 2018 в 18:12
52955319