【问题标题】:how to change Pandas dataframe to dictionary with key value pairs如何将 Pandas 数据框更改为具有键值对的字典
【发布时间】:2023-02-21 19:52:45
【问题描述】:

df = pd.DataFrame(ord_book).groupby('event_id').agg({'amount':'sum','pending_quantity':'sum'}).. 打印(DF),, 熊猫数据框:

event_id, 金额, pending_quantity

32, 250.0 , 4.788398
33、250.0、5.380083

我正在使用 df.to_dict()...我明白了 {'amount': {'32': 250.0, '33': 250.0}, 'pending_quantity': {'32': 4.788398200634525, '33': 5.380082793859557}}..这种类型的数据

我的预期答案如下: event_id:32,数量:250,数量:4.788398200634525, event_id:33,数量:250,数量:5.380082793859557,

任何人都知道答案,请帮助我

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    as_index=Falsesort=False参数添加到DataFrame.groupby,将orient='records'添加到DataFrame.to_dict

    df = (pd.DataFrame(ord_book).groupby('event_id', as_index=False, sort=False)
            .agg({'amount':'sum','pending_quantity':'sum'}))
    
    d = df.to_dict(orient='records')
    

    或者:

    df = pd.DataFrame(ord_book).groupby('event_id', as_index=False, sort=False).sum()
            
    d = df.to_dict(orient='records')
    

    【讨论】:

    • 第一种方法工作正常......谢谢你!
    • 使用此方法 (pd.DataFrame(ord_book).groupby('event_id', as_index=False) .agg({'amount':'sum','pending_quantity':'sum'}))...这只会得到金额、事件 ID、数量...我会得到 ord_book 的一些值(ord_book 中有 10 个文件)..可能吗????
    • @Muthumani18 - 是的,可能。添加参数sort=False,答案已编辑。
    • 没有工作...这返回相同的数据...[{'event_id': '33', 'amount': 250.0, 'pending_quantity': 5.380082793859557}, {'event_id': '32', 'amount': 250.0, 'pending_quantity': 4.788398200634525}]
    • @Muthumani18 - 你能添加一些输入样本数据和预期输出吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2021-02-14
    • 2013-12-05
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多