Что эквивалентно для LISTAGG в Pandas? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть следующие агрегаты:

def my_agg(x):
    names = {
        'first_seen': x['first_seen'].min(),
        'last_seen': x['last_seen'].max(),
        'md5s': x['md5s'].tolist(),
    }
    return pd.Series(names, index=['first_seen', 'last_seen', 'md5s'])

Но в моих результатах у меня есть что-то вроде этого, но я хочу объединение всех md5s

  "md5s": [["md5_1", "md5_2"], ["md5_3"], ["md5_4", "md5_5"]]

Какую функцию я должен использоватьвместо tolist ()?

Это мои DataFrame и GroupBy:

df = pd.DataFrame.from_dict(some_data, orient='index')
gr = df.groupby(level=0, axis=0).apply(my_agg)

И some_data имеет следующий формат:

{"foo": {"first_seen": "2019-02-15", "last_seen":"2019-02-20",
         "md5s": ["md5_1", "md5_2", ...]},
 "bar": {...}}

1 Ответ

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

Вместо tolist () мне пришлось поставить sum ()

'md5s': x['md5s'].sum()

Это немного сбивало с толку, потому что, когда вы думаете о сумме, вы думаете о добавлении чисел, а не о присоединении к спискам.Но это работает!

...