1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Pandas知識(shí)點(diǎn)-合并操作combine

        共 2015字,需瀏覽 5分鐘

         ·

        2021-06-25 22:18

        combine是聯(lián)合的意思,在Pandas中,combine()方法也是一種實(shí)現(xiàn)合并的方法,本文介紹combine()方法的用法。


        combine_first()實(shí)現(xiàn)合并



        在介紹combine()方法前,先介紹比combine()更特殊的combine_first()方法。


        combine_first(other): 對(duì)兩個(gè)DataFrame進(jìn)行聯(lián)合操作,實(shí)現(xiàn)合并的功能,other參數(shù)傳入被合并的DataFrame。


        combine_first()方法根據(jù)DataFrame的行索引和列索引,對(duì)比兩個(gè)DataFrame中相同位置的數(shù)據(jù),優(yōu)先取非空的數(shù)據(jù)進(jìn)行合并。


        如果調(diào)用combine_first()方法的df1中數(shù)據(jù)非空,則結(jié)果保留df1中的數(shù)據(jù),如果df1中的數(shù)據(jù)為空值且傳入combine_first()方法的df2中數(shù)據(jù)非空,則結(jié)果取df2中的數(shù)據(jù),如果df1和df2中的數(shù)據(jù)都為空值,則結(jié)果保留df1中的空值(空值有三種: np.nan、None 和 pd.NaT)。


        即使兩個(gè)DataFrame的形狀不相同也不受影響,聯(lián)合時(shí)主要是根據(jù)索引來(lái)定位數(shù)據(jù)的位置。

        combine()實(shí)現(xiàn)合并




        combine(other, func): 對(duì)兩個(gè)DataFrame進(jìn)行聯(lián)合操作,實(shí)現(xiàn)合并的功能。

        other參數(shù)傳入被合并的DataFrame,func參數(shù)傳入合并的規(guī)則函數(shù),兩個(gè)參數(shù)都是必傳參數(shù)。


        func函數(shù)的入?yún)⑹莾蓚€(gè)Series,分別來(lái)自兩個(gè)DataFrame(將DataFrame按列遍歷),返回結(jié)果是一個(gè)合并之后的Series,在函數(shù)中實(shí)現(xiàn)合并的規(guī)則。


        func可以是匿名函數(shù)、Python庫(kù)中定義好的函數(shù)、或自定義的函數(shù),要滿足兩個(gè)入?yún)⒁粋€(gè)返回值,且入?yún)⒑头祷刂凳菙?shù)組或Series。如上面的例子中,使用了匿名函數(shù),合并規(guī)則為返回兩個(gè)DataFrame中非空數(shù)據(jù)更多的列。原理如下圖。


        調(diào)用已有函數(shù)和自定義函數(shù)



        1. 調(diào)用numpy中的函數(shù)



        fmax()是numpy中實(shí)現(xiàn)的函數(shù),用于比較兩個(gè)數(shù)組,返回一個(gè)新的數(shù)組。返回兩個(gè)數(shù)組中相同索引的最大值,如果其中一個(gè)數(shù)組的值為空則返回非空的值,如果兩個(gè)數(shù)組的值都為空則返回第一個(gè)數(shù)組的空值。


        這個(gè)函數(shù)很適合用于combine()方法中,當(dāng)然還有很多現(xiàn)成的函數(shù)可以調(diào)用,按需調(diào)用即可。


        2. 自定義實(shí)現(xiàn)combine_first()相同功能



        自定義一個(gè)函數(shù)first_not_na()在合并時(shí)優(yōu)先取非空的數(shù)據(jù),這個(gè)函數(shù)實(shí)現(xiàn)的功能與combine_first(other)方法相同。


        合并時(shí)填充空值




        fill_value: 先用fill_value填充DataFrame中的空值,再按傳入的函數(shù)進(jìn)行合并操作。


        fill_value會(huì)填充DataFrame中所有列的空值,而且是在合并之前先填充。


        上面的例子中自定義了函數(shù)save_max(),合并時(shí)取同位置的最大值,原理如下圖。


        不處理缺少的列




        overwrite: 如果調(diào)用combine()方法的DataFrame中存在的列,在傳入combine()方法的DataFrame中不存在,則先在傳入的DataFrame中添加一列空值。overwrite參數(shù)默認(rèn)為True,如第四部分的例子中df4的填充原理如下。



        如果將overwrite參數(shù)設(shè)置成False,則不會(huì)給傳入combine()方法的DataFrame添加不存在的列,并且合并時(shí)不會(huì)處理調(diào)用combine()方法的DataFrame中多出的列,多出的列直接原樣返回。原理如下圖。



        總結(jié)



        同樣是合并操作,相對(duì)于前面文章介紹的concat()、merge()、join()三個(gè)方法,combine()方法可以自定義合并的規(guī)則。當(dāng)需要合并兩個(gè)相似的數(shù)據(jù)集,且兩個(gè)數(shù)據(jù)集里的數(shù)據(jù)各有一部分是目標(biāo)數(shù)據(jù)時(shí),很適合使用combine()方法。


        例如其中一個(gè)DataFrame中的數(shù)據(jù)比另一個(gè)DataFrame中的數(shù)據(jù)多,但第一個(gè)DataFrame中的部分?jǐn)?shù)據(jù)質(zhì)量(準(zhǔn)確性、缺失值數(shù)量等)不如第二個(gè)DataFrame中的高,就可以使用combine()方法。


        以上就是Pandas聯(lián)合方法combine()的介紹,如果需要本文代碼,可以點(diǎn)擊下方名片關(guān)注公眾號(hào)“Python碎片”,然后在后臺(tái)回復(fù)“pandas15”關(guān)鍵字獲取完整代碼。想學(xué)習(xí)更多Python知識(shí),立即點(diǎn)擊關(guān)注。

        > 參考文檔:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.combine.html

        瀏覽 64
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            热门视频 - 91爱爱 | 日本japanese调教vk | 久久久伦理A级 | 最爽亂倫刺激對白1 | 一本色道久久无码人妻精品69 | 嫩草研究院在线 | 影音先锋丝袜性爱电影 | 极品魔鬼身材女神啪啪精品 | 男女一进一出粗大楱视频 | 久久精品99久久久久久久久 |