<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案例精進(jìn) | 無數(shù)據(jù)記錄的日期如何填充?

          共 1318字,需瀏覽 3分鐘

           ·

          2022-04-28 17:03


          因業(yè)務(wù)需要,每周需要統(tǒng)計(jì)每天提交資源數(shù)量,但提交時(shí)間不定,可能會(huì)有某一天或者某幾天沒有提,那么如何將沒有數(shù)據(jù)的日期也填充進(jìn)去呢?

          如上圖所示,就缺少2021-09-04、2021-09-05、2021-09-08三天的數(shù)據(jù),需要增加其記錄并設(shè)置提交量為0。

          實(shí)戰(zhàn)

          剛開始我用的是比較笨的方法,直接復(fù)制到Excel,手動(dòng)將日期往下偏移,差哪天補(bǔ)哪天,次數(shù)多了就累了,QAQ~如果需要一個(gè)月、一個(gè)季度、一年的數(shù)據(jù)呢?這樣一個(gè)一個(gè)手動(dòng)偏移,還沒開始淦就已經(jīng)被嚇趴下了~

          所以,我就開始想,有沒有什么方法可以補(bǔ)上日期。

          der,為了不讓自己太累,點(diǎn)子就有了。

          這樣不就可以出來我想要的結(jié)果了嗎~

          說干就干,先來填充一個(gè)日期序列了來~

          #?習(xí)慣性導(dǎo)入包
          import?pandas?as?pd
          import?numpy?as?np
          import?time,datetime

          #?填充日期序列
          dt?=?pd.DataFrame(pd.date_range("2021-9-3",?periods=7,freq='D'))?
          dt.columns?=?["日期"]?
          dt

          接著就開始導(dǎo)入有提交數(shù)據(jù)的表。

          df?=?pd.read_excel("提交表.xlsx")
          df

          dt表出來了,提交表df也出來,想要實(shí)現(xiàn)目的,直接左連接即可。

          df_new?=?pd.merge(dt,df,how='left',on="日期")
          df_new

          結(jié)果,報(bào)錯(cuò)了

          果然,df的日期格式是object類型,而dt是日期格式~

          所以,要把df的日期也改成對應(yīng)的格式才能join。

          解決問題

          如何將series 的object類型的日期改成日期格式呢?

          infer_datetime_format這個(gè)參數(shù)設(shè)置為True 就可以了,Pandas將會(huì)嘗試轉(zhuǎn)換為日期類型。

          具體語法如下所示:

          df["日期"]?=?pd.to_datetime(df["日期"],?infer_datetime_format=True)

          另外,我還百度過設(shè)置errors 參數(shù)為 ='coerce'。Pandas會(huì)遇到不能轉(zhuǎn)換的數(shù)據(jù)就會(huì)賦值為NaN,但這個(gè)方法并不太適用于我這個(gè)需求。

          df_new?=?pd.merge(dt,?df,?how='left',?on="日期")
          df_new

          NaN有點(diǎn)不舒服,可以設(shè)置為0,這樣就看著順眼點(diǎn)啦~

          df_new['搜狗提交量']=df_new['搜狗提交量'].fillna(0)
          df_new

          這樣就可以完成了,我每次需要十幾分鐘的工作。

          以上就是我關(guān)于Pandas在工作上的分享,希望能幫助到大家。

          下載練習(xí)數(shù)據(jù):https://www.lanzoui.com/iBAhpv8ym4j

          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請持續(xù)關(guān)注Python實(shí)用寶典。

          有任何問題,可以在公眾號后臺回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問。

          原創(chuàng)不易,希望你能在下面點(diǎn)個(gè)贊和在看支持我繼續(xù)創(chuàng)作,謝謝!

          點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)

          Python實(shí)用寶典?(pythondict.com)
          不只是一個(gè)寶典
          歡迎關(guān)注公眾號:Python實(shí)用寶典

          瀏覽 34
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美一级网 | 搜国产女主播高清视频操逼 | 国产人人人操 | 精品视频| www.99热视频 |