Использовать агрегирование в Dandas DataFrame - PullRequest
0 голосов
/ 28 мая 2018

У меня есть DataFrame:

dat = pd.DataFrame({
    'key1' : [ 1,   1,   2,   2,   3,   3,   3,   3,   4,   4],
    'key2' : ['a', 'b', 'a', 'c', 'b', 'c', 'd', 'e', 'c', 'e'],
    'value' : [1,   2,   3,   4,   5,   6,   7,   8,   9,   10]
})

Я мог бы использовать list для агрегирования столбцов:

dat.groupby('key1')['key2'].apply(list)
## key1
## 1          [a, b]
## 2          [a, c]
## 3    [b, c, d, e]
## 4          [c, e]
## Name: key2, dtype: object

Что если бы я хотел получитьагрегат сгруппирован по key1, где каждая строка представляет собой dict из { key2 : value } пар?Мой ожидаемый результат:

## key1
## 1          {a : 1, b : 2}
## 2          {a : 3, c : 4}
## 3    {b : 5, c : 6, d : 7, e : 8}
## 4          {c : 9, e : 10}

Как этого можно достичь в пандах?

Одним из решений может быть создание двух списков с использованием функции выше, а затем объединение их в виде dict, номожет быть, есть лучшее решение?

1 Ответ

0 голосов
/ 28 мая 2018

На основании вашего обновления вы ищете groupby + apply.

df.groupby('key1')['key2', 'value'].apply(lambda x: dict(x.values))

key1
1                    {'a': 1, 'b': 2}
2                    {'a': 3, 'c': 4}
3    {'b': 5, 'c': 6, 'd': 7, 'e': 8}
4                   {'c': 9, 'e': 10}
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...