Как сделать несколько столбцов в список значения ключа в Python - PullRequest
0 голосов
/ 08 октября 2018

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

    df=
            city    code     qty1       type
             hyd     1        10          a
             hyd     2        12          b
             ban     2        15          c 
             ban     4        25          d     
             pune    1        10          e
             pune    3        12          f

Я хочу создать новыйфрейм данных, как показано ниже:

df1 = 

city                list
hyd      [{"1":"10","type":"a"},{"2":"12","type":"b"}]
ban      [{"2":"15","type":"c"},{"4":"25","type":"d"}]
pune     [{"1":"10","type":"e"},{"3":"12","type":"f"}]

1 Ответ

0 голосов
/ 08 октября 2018

defaultdict

from collections import defaultdict

d = defaultdict(list)

for t in df.itertuples():
  d[t.city].append({t.code: t.qty1, 'type': t.type})

pd.Series(d).rename_axis('city').to_frame('list')

                                              list
city                                              
ban   [{2: 15, 'type': 'c'}, {4: 25, 'type': 'd'}]
hyd   [{1: 10, 'type': 'a'}, {2: 12, 'type': 'b'}]
pune  [{1: 10, 'type': 'e'}, {3: 12, 'type': 'f'}]

groupby

pd.Series([
    {c: q, 'type': t}
    for c, q, t in zip(df.code, df.qty1, df.type)
]).groupby(df.city).apply(list).to_frame('list')

                                              list
city                                              
ban   [{2: 15, 'type': 'c'}, {4: 25, 'type': 'd'}]
hyd   [{1: 10, 'type': 'a'}, {2: 12, 'type': 'b'}]
pune  [{1: 10, 'type': 'e'}, {3: 12, 'type': 'f'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...