电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python通過兩個dataframe用for循環求笛卡爾積

瀏覽:5日期:2022-07-27 09:27:39

合并兩個沒有共同列的dataframe,相當于按行號求笛卡爾積。

最終效果如下

Python通過兩個dataframe用for循環求笛卡爾積

以下代碼是參考別人的代碼修改的:

def cartesian_df(A,B): new_df = pd.DataFrame(columns=list(A).extend(list(B))) for _,A_row in A.iterrows(): for _,B_row in B.iterrows():row = A_row.append(B_row)new_df = new_df.append(row,ignore_index=True) return new_df#這個方法,如果兩張表列名重復會出錯

這段代碼的思路是對兩個表的每一行進行循環,運行速度比較慢,復雜度應該是O(m*n),m是A表的行數,n是B表的行數。

因為我用到的合并表行數比較多,時間太慢,所以針對上面的代碼進行了優化。

思路是利用dataframe的merge功能,先循環復制A表,將循環次數添加為列,直接使用merge合并,復雜度應該為O(n)(n是B表的行數),代碼如下:

def cartesian_df(df_a,df_b): ’求兩個dataframe的笛卡爾積’ #df_a 復制n次,索引用復制次數 new_df_a = pd.DataFrame(columns=list(df_a)) for i in range(0,df_b.shape[0]): df_a[’merge_index’] = i new_df_a = new_df_a.append(df_a,ignore_index=True) #df_b 設置索引為行數 df_b.reset_index(inplace = True, drop =True) df_b[’merge_index’] = df_b.index #merge new_df = pd.merge(new_df_a,df_b,on=[’merge_index’],how=’left’).drop([’merge_index’],axis = 1) return new_df#兩個原始表中不能有列名’merge_index’

使用一張8行的表和一張142行的表進行測試,優化前的方法用時:5.560689926147461秒

Python通過兩個dataframe用for循環求笛卡爾積

優化后的方法用時:0.1296539306640625秒(142行的表作為b表)

Python通過兩個dataframe用for循環求笛卡爾積

根據計算原理,將行數少的表放在b表可以更快,測試用時:0.021603107452392578秒(8行的表作為b表)

Python通過兩個dataframe用for循環求笛卡爾積

這個速度已經達到預期,基本感覺不到等待,優化完成。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 安徽成考网-安徽成人高考网 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 陕西华春网络科技股份有限公司 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 自动化改造_智虎机器人_灌装机_贴标机-上海圣起包装机械 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 技德应用| 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | LED显示屏_LED屏方案设计精准报价专业安装丨四川诺显科技 | 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 神马影院-实时更新秒播 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 |