99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例
盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例
2022-03-18
收藏
盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

作者:Python進階者

來源:Python爬蟲與數(shù)據(jù)挖掘

前言

偶然想對數(shù)據(jù)分列多一些操作,但是遇到了問題,如下圖所示。

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

上圖這個是原始數(shù)據(jù),但是現(xiàn)在想要下圖這樣的效果,怎么破呢?

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

這個問題竟然在網(wǎng)上找了很久,沒有找到合適的,也許是我問問題的沒有問到點子上,不過還好比較幸運,在才哥群里有【1px】、【貓藥師Kelly】大佬給出了思路和答案。

一、思路

一開始想到的是使用Excel進行分列,這個操作我自然熟悉了,只不過列是分割了,但是其他的行數(shù)據(jù)沒有一起跟過來,如果你說大不了復(fù)制粘貼唄,也花不了幾秒鐘,我覺得也是沒毛病的,這也確實是一直思路,不死磕也行。

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

不過不要慌,問題不大,這里給出【1px】大佬給出的解決方法,拍案驚奇!

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

二、解決方案

針對該問題,其實有兩個方法,第一個是【麥?zhǔn)濉繒薪o出的openpyxl庫進行拆解,如下圖所示:

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

第二個是使用pandas中的explode()函數(shù),這里直接給出【1px】大佬答案,如下圖所示:

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

其實關(guān)鍵點就是pandas中的爆炸函數(shù)explode(),早在之前我看到過有人用這個,只是一直不知道怎么用,今天在這里算是漲知識了。

import pandas as pd
df = pd.read_excel(
'keywords.xlsx')
# ['序號', '年份', '來源出版物名稱', '索引關(guān)鍵字'
df.columns
df.loc[:, ['索引關(guān)鍵字']] = df['索引關(guān)鍵字'].str.split(";"# expand=True 可以把用分割的內(nèi)容直接分列
df.head()
df.explode(column='索引關(guān)鍵字')

最后得到預(yù)取的效果如下圖所示:

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

上面我只是拿一行數(shù)據(jù)進行測試,接下來使用多行進行測試看看:

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

代碼運行之后,發(fā)現(xiàn)都可以滿足要求:

盤點一個Pandas中explode()爆炸函數(shù)應(yīng)用實際案例

三、總結(jié)

我是Python進階者。本文基于實際過程中遇到的Excel數(shù)據(jù)拓展分列的問題,使用pandas中的explode()函數(shù)順利完成解答,一個小題目,幫助自己和大家加深對該函數(shù)的認識。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }