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

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

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

合并兩個(gè)沒有共同列的dataframe,相當(dāng)于按行號求笛卡爾積。

最終效果如下

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

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
#這個(gè)方法,如果兩張表列名重復(fù)會出錯(cuò)

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

因?yàn)槲矣玫降暮喜⒈硇袛?shù)比較多,時(shí)間太慢,所以針對上面的代碼進(jìn)行了優(yōu)化。

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

def cartesian_df(df_a,df_b):
  '求兩個(gè)dataframe的笛卡爾積'
  #df_a 復(fù)制n次,索引用復(fù)制次數(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è)置索引為行數(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

#兩個(gè)原始表中不能有列名'merge_index'

使用一張8行的表和一張142行的表進(jìn)行測試,優(yōu)化前的方法用時(shí):5.560689926147461秒

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

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

這個(gè)速度已經(jīng)達(dá)到預(yù)期,基本感覺不到等待,優(yōu)化完成。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

    python檢測某個(gè)變量是否有定義的方法

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

    Python測試框架pytest介紹

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

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

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

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

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

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

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

    基于python socketserver框架全面解析

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

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

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

    python語音識別實(shí)踐之百度語音API

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

    Python如何使用turtle庫繪制圖形

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

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

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

最新評論

盐山县| 永泰县| 南开区| 吕梁市| 邢台市| 莱芜市| 新余市| 杭锦后旗| 曲阳县| 新建县| 格尔木市| 寻乌县| 仁寿县| 梅州市| 保康县| 藁城市| 龙山县| 扎赉特旗| 盐源县| 恩平市| 合水县| 治县。| 五峰| 昌图县| 京山县| 株洲市| 库尔勒市| 长岭县| 肥城市| 琼结县| 昌都县| 大厂| 米泉市| 宝鸡市| 湘西| 如东县| 仙游县| 张家口市| 行唐县| 石林| 花垣县|