Как группировать в пандах с JSON в качестве значения? - PullRequest
0 голосов
/ 12 февраля 2019

Мои данные DataFrame pandas:

     dat1 dat2 dat3
0    1    1    [{"gid": 1, "bs": "2", "_cc": "1"}]
1    1    1    [{"gid": 1, "bs": "2", "_cc": "1"}]
2    2    3    [{"gid": 3, "bs": "5", "_cc": "1"}]

Мне нужно сгруппировать по столбцу dat1, мой ожидаемый результат должен быть:

     dat1 dat2 dat3
0    1    1    [{"gid": 1, "bs": "2", "_cc": "1"}]
1    2    3    [{"gid": 3, "bs": "5", "_cc": "1"}]

Я использовал pandas dataframe следующим образом:

data = dataframedata   #dataframe data 
(out['dat1','dat2','dat3']).groupby([ 'dat1','dat2','dat3']).size().reset_index()

Я получаю keyerror at dat3, пожалуйста, помогите мне найти решение заранее.

1 Ответ

0 голосов
/ 12 февраля 2019

Проблема в том, что list s не могут быть хешируемыми, поэтому необходимо преобразовать их в строки:

data = df[~df['dat3'].astype(str).duplicated()] 
print (data)
   dat1  dat2                                 dat3
0     1     1  [{'gid': 1, 'bs': '2', '_cc': '1'}]
2     2     3  [{'gid': 3, 'bs': '5', '_cc': '1'}]

Если хотите удалить дубликаты по нескольким столбцам:

data = df[~df.assign(dat3= df['dat3'].astype(str)).duplicated(['dat1','dat2','dat3'])] 
print (data)
   dat1  dat2                                 dat3
0     1     1  [{'gid': 1, 'bs': '2', '_cc': '1'}]
2     2     3  [{'gid': 3, 'bs': '5', '_cc': '1'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...