【问题标题】:python pandas convert dataframe to dictionary with multiple valuespython pandas将数据框转换为具有多个值的字典
【发布时间】:2013-12-05 10:31:24
【问题描述】:

我有一个包含 2 列地址和 ID 的数据框。我想在字典中合并具有相同地址的 ID

import pandas as pd, numpy as np

df = pd.DataFrame({'Address' : ['12 A', '66 C', '10 B', '10 B', '12 A', '12 A'],
                'ID' : ['Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff']})
AS=df.set_index('Address')['ID'].to_dict()

print df

  Address  ID
0    12 A  Aa
1    66 C  Bb
2    10 B  Cc
3    10 B  Dd
4    12 A  Ee
5    12 A  Ff

print AS

{'66 C': 'Bb', '12 A': 'Ff', '10 B': 'Dd'}

我想要的是让副本存储多个值,例如:

{'66 C': ['Bb'], '12 A': ['Aa','Ee','Ff'], '10 B': ['Cc','Dd']}

【问题讨论】:

    标签: python dictionary pandas


    【解决方案1】:

    我认为您可以在这里使用groupby 和字典理解:

    >>> df
      Address  ID
    0    12 A  Aa
    1    66 C  Bb
    2    10 B  Cc
    3    10 B  Dd
    4    12 A  Ee
    5    12 A  Ff
    >>> {k: list(v) for k,v in df.groupby("Address")["ID"]}
    {'66 C': ['Bb'], '12 A': ['Aa', 'Ee', 'Ff'], '10 B': ['Cc', 'Dd']}
    

    【讨论】:

    • 什么是我有多个列,我需要 df.groupby('Adress')['ID','XX']?
    【解决方案2】:

    回应关于多列的评论:

    >>> df
      Address  ID  Name
    0    12 A  Aa  Alpha
    1    66 C  Bb  Bravo
    2    10 B  Cc  Charlie
    3    10 B  Dd  Delta
    4    12 A  Ee  Edgar
    5    12 A  Ff  Frank
    >>> {k: v.to_dict() for k,v in df.groupby("Address")}
    

    【讨论】:

      猜你喜欢
      • 2016-12-28
      • 2018-09-12
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2022-01-07
      • 2015-10-06
      • 2022-09-30
      相关资源
      最近更新 更多