国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

pandas去除重復列的實現方法

2020-02-16 00:58:51
字體:
來源:轉載
供稿:網友

數據準備

假設我們目前有兩個數據表:

① 一個數據表是關于三個人他們的id以及其他的幾列屬性信息

import pandas as pdimport numpy as npdata = pd.DataFrame(np.random.randint(low=1,high=20,size=(3,4)))data['id'] = range(1,4)# 輸出:其中,最左邊的0 1 2 為其索引

② 另外一個數據表是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]# 輸出:

問題描述

① 首先我們需要統計每個用戶app操作記錄數,比如上表可以看出用戶id為1的用戶有2條操作記錄,用戶id為3的用戶有3條操作記錄

s = sample.groupby('id').count()# 輸出:

② 此時,S是一個以id為索引,count出來的記錄數為value的Series結構。因為考慮到后面我們需要id列進行merge,所以我們需要讓id列從索引列變成真實的一列。

s = s.reset_index()# 輸出:

③ 將S與最上的data表進行merge,我們不想要看到重復的id列,甚至我們也可以將問題延伸為S與data表不止是id列的重復,還有好多條其他的列的重復,那么如何保證將它們merge之后沒有重復列呢?

解決方案

第一想法是用 DataFrame.drop(‘列名') 或者用 del DataFrame[‘列名']

但是如果用該方法,會刪除掉所有的重復列,而達不到我們的要求。

辦法是: 參考StackOverflow解答

cols_to_use = s.columns.difference(data.columns) # pandas版本在0.15及之上的都可以用這種方法,該方法找出S和data表的不同列,然后再進行mergepd.merge(data, s[cols_to_use], left_index=True, right_index=True, how='outer')

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 密云县| 英超| 汉川市| 凤城市| 苍山县| 定西市| 宁强县| 巴塘县| 静乐县| 蕉岭县| 西和县| 望奎县| 海林市| 密云县| 石渠县| 安图县| 南丹县| 偃师市| 罗江县| 雷波县| 五台县| 鸡东县| 盐城市| 德惠市| 安陆市| 合山市| 通渭县| 宁强县| 额敏县| 许昌县| 南华县| 玛多县| 肥城市| 深圳市| 博客| 沅江市| 东源县| 东港市| 孝感市| 和顺县| 临颍县|