HuTao王牛奶 2022-09-23 22:37 采纳率: 100%
浏览 49
已结题

关于#python#的问题:数据结构算法

order和product是都有重复的大型表格,互相是多对多的关系即订单一可以包含多个产品,一个产品可以被多个订单包含,现在想用一个类似矩阵的形式储存这两个列表间的关系以便于查询
应该用什么数据结构算法更快
如果有细说思路,代码更好了

  • 写回答

2条回答 默认 最新

  • Java大魔王 2022-09-24 10:49
    关注

    可以用python的pandas的dataframe结构去处理,不管你的数据是在sql中,还是在excel,json,csv,tsv等等不同的地方,或者说实在程序运行过程中产生的,没有额外存储的别的地方。pandas这个库都能把你的数据变成一个二维的类似表的结构(dataframe),有行索引和列索引,类似这样:

    img


    那么按照你说的有两个大型表格,那就放到两个dataframe里面就好了,然后通过dataframe提供的各种方法,例如groupby分组,merger关联(可以左关联,右关联那等等),concat合并进行数据的操作,可以达到在程序中就和操作sql一样。非常方便

    简单代码示例:

        import pandas as pd
        # 初始化dataframe赋值
        df_a = pd.DataFrame([{'a_id': '1', 'a_name': '苹果'},
                             {'a_id': '2', 'a_name': '西瓜'}]
                        )
        df_b = pd.DataFrame([{'b_id': '1', 'a_value': 15, 'a_id': '1'},
                             {'b_id': '2', 'a_value': 20, 'a_id': '2'},
                             {'b_id': '3', 'a_value': 8, 'a_id': '3'}]
                        )
        df_c = pd.DataFrame([{'a_id': '3', 'a_name': '香蕉'},
                             {'a_id': '4', 'a_name': '雪梨'}]
                        )
        # 进行合并(类似sqlunion,表头一样的,上下合并成一张表)
        df_a_c = pd.concat([df_a, df_c])
        # 进行关联,类似sqlleft join,right join,inner join
        df_left_join = pd.merge(df_a_c, df_b, left_on='a_id', right_on='a_id', how='left')
    

    运行结果:

    img

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • _GX_ 2022-09-24 05:55
    关注

    用SQL建立三个表:order, product, order_product,其中order表主键是order_number,product表主键是product_id,order_product表则是order和product多对多的关系表,以order_number和product_id作为外键。查询时可以把三张表连接起来查。

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 创建了问题 9月23日

悬赏问题

  • ¥30 计算机网络子网划分路由模拟操作
  • ¥15 MATLAB的画图问题
  • ¥15 c语言用fopen_s成功打开文件之后闪退
  • ¥20 用C++完成,并且运用数组
  • ¥30 求解电力系统潮流计算结果不收敛问题
  • ¥15 某易易盾点选data解析逆向
  • ¥15 系统崩溃,关于订单的处理
  • ¥15 datax-web连接hive为数据源时发生报错,如何解决?
  • ¥15 plink在进行gwas分析时总读取不到表型
  • ¥20 数据结构与c语言的实践内容