pandas去除重復(fù)列的實(shí)現(xiàn)方法
數(shù)據(jù)準(zhǔn)備
假設(shè)我們目前有兩個數(shù)據(jù)表:
① 一個數(shù)據(jù)表是關(guān)于三個人他們的id以及其他的幾列屬性信息
import pandas as pd import numpy as np data = pd.DataFrame(np.random.randint(low=1,high=20,size=(3,4))) data['id'] = range(1,4) # 輸出:其中,最左邊的0 1 2 為其索引

② 另外一個數(shù)據(jù)表是3個用戶的app操作日志信息,一個人會有多條app操作記錄
sample = pd.DataFrame(np.random.randint(low=1,high=9,size=(7,1)),columns=['hhh']) sample['id'] = [1,1,2,2,3,3,3] # 輸出:

問題描述
① 首先我們需要統(tǒng)計(jì)每個用戶app操作記錄數(shù),比如上表可以看出用戶id為1的用戶有2條操作記錄,用戶id為3的用戶有3條操作記錄
s = sample.groupby('id').count()
# 輸出:

② 此時,S是一個以id為索引,count出來的記錄數(shù)為value的Series結(jié)構(gòu)。因?yàn)榭紤]到后面我們需要id列進(jìn)行merge,所以我們需要讓id列從索引列變成真實(shí)的一列。
s = s.reset_index() # 輸出:

③ 將S與最上的data表進(jìn)行merge,我們不想要看到重復(fù)的id列,甚至我們也可以將問題延伸為S與data表不止是id列的重復(fù),還有好多條其他的列的重復(fù),那么如何保證將它們merge之后沒有重復(fù)列呢?
解決方案
第一想法是用 DataFrame.drop(‘列名') 或者用 del DataFrame[‘列名']
但是如果用該方法,會刪除掉所有的重復(fù)列,而達(dá)不到我們的要求。
辦法是: 參考StackOverflow解答
cols_to_use = s.columns.difference(data.columns) # pandas版本在0.15及之上的都可以用這種方法,該方法找出S和data表的不同列,然后再進(jìn)行merge pd.merge(data, s[cols_to_use], left_index=True, right_index=True, how='outer')

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在pycharm創(chuàng)建scrapy項(xiàng)目的實(shí)現(xiàn)步驟
這篇文章主要介紹了在pycharm創(chuàng)建scrapy項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python異步執(zhí)行CMD命令的具體實(shí)現(xiàn)
異步執(zhí)行CMD命令是提高Python程序性能的有效方法,本文就來介紹一下Python異步執(zhí)行CMD命令的具體實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-05-05
Python+Pygame實(shí)現(xiàn)經(jīng)典魂斗羅游戲
《魂斗羅》(Contra)是由Konami于1987年推出的一系列卷軸射擊類單機(jī)游戲。本文將利用Python中的Pygame庫實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下2022-05-05
python利用joblib進(jìn)行并行數(shù)據(jù)處理的代碼示例
在數(shù)據(jù)量比較大的情況下,數(shù)據(jù)預(yù)處理有時候會非常耗費(fèi)時間,可以利用 joblib 中的 Parallel 和 delayed 進(jìn)行多CPU并行處理,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10
Python數(shù)據(jù)分析之matplotlib繪圖詳解
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)分析之如何利用matplotlib進(jìn)行繪圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09
淺談python為什么不需要三目運(yùn)算符和switch
下面小編就為大家?guī)硪黄獪\談python為什么不需要三目運(yùn)算符和switch。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
Django+zTree構(gòu)建組織架構(gòu)樹的方法
zTree是一個開源的依靠JQuery實(shí)現(xiàn)的多功能樹插件,具有性能優(yōu)異、配置靈活、功能強(qiáng)大的特點(diǎn),這篇文章主要介紹了Django+zTree構(gòu)建組織架構(gòu)樹,需要的朋友可以參考下2019-08-08
Python如何根據(jù)頁碼處理PDF文件的內(nèi)容
在Python中,fitz庫可以用于多種任務(wù),如打開PDF文件、遍歷頁面、添加注釋、提取文本、旋轉(zhuǎn)頁面等,此外,它還可以用于在PDF頁面上添加高亮注釋、提取圖像等操作,這篇文章主要介紹了Python根據(jù)頁碼處理PDF文件的內(nèi)容,需要的朋友可以參考下2024-06-06
Python隨機(jī)函數(shù)random()使用方法小結(jié)
random()是Python中生成隨機(jī)數(shù)的函數(shù),是由random模塊控制,random()函數(shù)不能直接訪問,需要導(dǎo)入random 模塊,然后再通過相應(yīng)的靜態(tài)對象調(diào)用該方法才能實(shí)現(xiàn)相應(yīng)的功能2018-04-04

