Как df.drop_columns (), но сохранить значения одного столбца в виде списка - PullRequest
0 голосов
/ 07 мая 2020

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

У меня есть DF:

Col1     Col2     Col3
'aa1'    'bb1'    'cc1'
'aa2'    'bb2'    'cc2'
'aa1'    'bb3'    'cc3'

Я могу просто использовать DF.drop_columns (subset = ['Col1']) и получить

Col1     Col2     Col3
'aa1'    'bb1'    'cc1'
'aa2'    'bb2'    'cc2'

, но я ищу

Col1     Col2            Col3
'aa1'    ['bb1','bb3']  ['cc1''cc3']
'aa2'    ['bb2']        ['cc2']

, где данные Col2 и Col3 хранятся в виде списков в оставшемся столбце.

Спасибо, F

1 Ответ

2 голосов
/ 07 мая 2020

Если возможно, все значения являются списками, используйте GroupBy.agg с list:

df1 = df.groupby('Col1').agg(list).reset_index()
print (df1)
    Col1            Col2            Col3
0  'aa1'  ['bb1', 'bb3']  ['cc1', 'cc3']
1  'aa2'         ['bb2']         ['cc2']

Если нужны списки только для дубликатов, используйте лямбда-функцию с оператором if-else:

f = lambda x: list(x) if len(x) > 1 else x.iat[0]
df2 = df.groupby('Col1').agg(f).reset_index()
print (df2)
    Col1            Col2            Col3
0  'aa1'  ['bb1', 'bb3']  ['cc1', 'cc3']
1  'aa2'           'bb2'           'cc2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...