<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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ù)索引來定位數(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,分別來自兩個(gè)DataFrame(將DataFrame按列遍歷),返回結(jié)果是一個(gè)合并之后的Series,在函數(shù)中實(shí)現(xiàn)合并的規(guī)則。


          func可以是匿名函數(shù)、Python庫中定義好的函數(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)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  毛片高清无码 | 97精品超碰一区二区三区 | 6—12呦国产精品 | 破小嫩苟一区二区三区 | 一级日韩 |