Pandas Dataframes - новый фрейм данных с реорганизованными данными - PullRequest
0 голосов
/ 11 сентября 2018

Я новичок в Pandas и пытаюсь создать новый фрейм данных из существующего.

Мой текущий фрейм данных имеет формат:

ID   Country    Status  
ABC  USA        Go
ABC  Columbia   Stop
ABC  Japan      Pause
ABC  Egypt      Go 
DEF  Canada     Go
DEF  Peru       Stop

Я пытаюсь объединить данные, чтобы сделать их более компактными.Мой новый формат:

ID   Go          Stop      Pause
ABC  USA, Egypt  Columbia  Japan
DEF  Canada      Peru

По сути, возможные значения статуса становятся столбцами, и для каждого идентификатора эти столбцы заполняются списком стран, имеющих этот статус.Я новичок в пандах и борюсь с лучшим способом приблизиться к этому - любые предложения будут с благодарностью.

Ответы [ 2 ]

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

Если вы абсолютно обязаны это сделать, то вот как вы это делаете.

In [48]: df.groupby(['ID', 'Status'])['Country'].apply(','.join).unstack()
Out[48]:
Status         Go  Pause      Stop
ID
ABC     USA,Egypt  Japan  Columbia
DEF        Canada    NaN      Peru
0 голосов
/ 11 сентября 2018

Вы можете использовать pd.pivot_table:

res = df.pivot_table(index='ID', columns='Status', values='Country', aggfunc=', '.join)

print(res)

Status          Go  Pause      Stop
ID                                 
ABC     USA, Egypt  Japan  Columbia
DEF         Canada   None      Peru
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...