pandas сбрасывает индекс после выполнения группового режима и сохраняет выборочные столбцы - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу взять кадр данных pandas, сделать подсчет уникальных элементов по столбцу и сохранить 2 столбца.Но после группировки я получаю многоиндексный фрейм данных, который я не могу (1) сгладить (2) выбрать только соответствующие столбцы.Вот мой код:

import pandas as pd
df = pd.DataFrame({
'ID':[1,2,3,4,5,1],
'Ticker':['AA','BB','CC','DD','CC','BB'],
'Amount':[10,20,30,40,50,60],
'Date_1':['1/12/2018','1/14/2018','1/12/2018','1/14/2018','2/1/2018','1/12/2018'],
'Random_data':['ax','','nan','','by','cz'],
'Count':[23,1,4,56,34,53]
})

df2 = df.groupby(['Ticker']).agg(['nunique'])

df2.reset_index()

print(df2)

df2 по-прежнему имеет два уровня индекса.И имеет все столбцы: Сумма, Количество, Дата_1, Идентификатор, Случайные_данные.

Как мне уменьшить его до одного уровня индекса?

И сохранить только столбцы ID и Случайные_данные?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Используйте SeriesGroupBy.nunique и фильтруйте столбцы в списке после groupby:

df2 = df.groupby('Ticker')['Date_1','Count','ID'].nunique().reset_index()
print(df2)
  Ticker  Date_1  Count  ID
0     AA       1      1   1
1     BB       2      2   2
2     CC       2      2   2
3     DD       1      1   1
0 голосов
/ 14 сентября 2018

Попробуйте вместо этого:

1) Выберите только соответствующие столбцы (['ID', 'Random_data'])

2) Не передавайте список на .agg - просто 'nunique' - список является причиной многоиндексного поведения.

df2 = df.groupby(['Ticker'])['ID', 'Random_data'].agg('nunique')
df2.reset_index()

  Ticker  ID  Random_data
0     AA   1            1
1     BB   2            2
2     CC   2            2
3     DD   1            1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...