最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過兩個dataframe用for循環(huán)求笛卡爾積

 更新時間:2020年04月29日 09:08:11   作者:何未生  
這篇文章主要介紹了Python通過兩個dataframe用for循環(huán)求笛卡爾積,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

最終效果如下

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

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
#這個方法,如果兩張表列名重復會出錯

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

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

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

def cartesian_df(df_a,df_b):
  '求兩個dataframe的笛卡爾積'
  #df_a 復制n次,索引用復制次數(shù)
  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 設置索引為行數(shù)
  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行的表進行測試,優(yōu)化前的方法用時:5.560689926147461秒

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

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

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

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

相關文章

  • python檢測某個變量是否有定義的方法

    python檢測某個變量是否有定義的方法

    這篇文章主要介紹了python檢測某個變量是否有定義的方法,實例分析了Python常用的變量判定技巧,需要的朋友可以參考下
    2015-05-05
  • Python測試框架pytest介紹

    Python測試框架pytest介紹

    這篇文章主要介紹了Python測試框架pytest介紹,Pytest是一個非常成熟的全功能的python測試框架,有簡單靈活易上手、支持參數(shù)化等優(yōu)點,下面其相關內容需要的小伙伴可以參考一下
    2022-03-03
  • 如何使用python獲取現(xiàn)在的日期與時間

    如何使用python獲取現(xiàn)在的日期與時間

    學習了一段時間的python,不知道大家對于代碼的編寫有了屬于自己的一套思路了呢,下面這篇文章主要給大家介紹了關于如何使用python獲取現(xiàn)在的日期與時間的相關資料,需要的朋友可以參考下
    2022-11-11
  • Python基礎教程之利用期物處理并發(fā)

    Python基礎教程之利用期物處理并發(fā)

    這篇文章主要給大家介紹了關于Python基礎教程之利用期物處理并發(fā)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
    2018-03-03
  • Python實現(xiàn)簡單的索引排序與搜索功能

    Python實現(xiàn)簡單的索引排序與搜索功能

    這篇文章主要介紹了Python實現(xiàn)簡單的索引排序與搜索功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 基于python socketserver框架全面解析

    基于python socketserver框架全面解析

    下面小編就為大家?guī)硪黄趐ython socketserver框架全面解析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn)

    NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn)

    在使用NumPy時,通常需要先創(chuàng)建一個數(shù)組,然后再對這個數(shù)組進行各種操,本文主要介紹了NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-06-06
  • python語音識別實踐之百度語音API

    python語音識別實踐之百度語音API

    這篇文章主要為大家詳細介紹了python語音識別實踐之百度語音API,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python如何使用turtle庫繪制圖形

    Python如何使用turtle庫繪制圖形

    這篇文章主要介紹了Python如何使用turtle庫繪制圖形,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • python?如何去除字符串中指定字符

    python?如何去除字符串中指定字符

    python中的strip()可以去除頭尾指定字符,只能刪除頭尾指定字符,想要去除中間字符,可以使用replace()函數(shù),本文結合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-12-12

最新評論

南雄市| 兴仁县| 湾仔区| 泽州县| 长岭县| 鄄城县| 儋州市| 道孚县| 淅川县| 尉氏县| 宣城市| 黄山市| 延庆县| 万州区| 乐安县| 临江市| 景泰县| 二手房| 米易县| 富阳市| 双城市| 牟定县| 中方县| 凤凰县| 石家庄市| 石林| 天峻县| 大竹县| 泰宁县| 台东县| 萍乡市| 尼木县| 彰武县| 康定县| 阿拉善右旗| 贵阳市| 平泉县| 双桥区| 丹寨县| 马边| 河间市|