为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫将相同的值合并在同一行中

熊猫将相同的值合并在同一行中

米琪卡哇伊 2021-06-03 13:06:30
有以下数据:  board_href_deals       items  test10            test2  {'x': 'a'}  test11            test2  {'x': 'b'}  test2分组“board_href_deals”后,我想以列表格式输出现有数据,如下所示: board_href_deals                     items     test10            test2  [{'x': 'a'}, {'x': 'b'}]    ['test1', 'test2']谢谢你
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

另一种解决方案,尤其是在旧版本的 Pandas 上,是在序列上使用GroupBy+ apply,然后通过concat.


在 Python 3.60 / Pandas 0.19.2 上进行基准测试。这个人为的例子有少量的组;如果效率是一个问题,您应该使用您的数据进行测试。


import pandas as pd


df = pd.DataFrame({'A': ['test2', 'test2', 'test4', 'test4'],

                   'B': [{'x': 'a'}, {'x': 'b'}, {'y': 'a'}, {'y': 'b'}],

                   'C': ['test1', 'test2', 'test3', 'test4']})


df = pd.concat([df]*10000)


def jpp(df):

    g = df.groupby('A')

    L = [g[col].apply(list) for col in ['B', 'C']]

    return pd.concat(L, axis=1).reset_index()


%timeit jpp(df)                                 # 11.3 ms per loop

%timeit df.groupby('A').agg(lambda x: list(x))  # 20.5 ms per loop


查看完整回答
反对 回复 2021-06-06
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信