小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Pandas 合并數(shù)據(jù)集

 北方的白樺林 2018-12-08

在數(shù)據(jù)挖掘過程中,經(jīng)常會有不同表格的數(shù)據(jù)需要進行合并操作。今天介紹通過python下的pandas庫下的merge方法和concat方法來實現(xiàn)數(shù)據(jù)集的合并。

1.merge

merge 函數(shù)通過一個或多個鍵來將數(shù)據(jù)集的行連接起來。該函數(shù)的主要 應用場景是針對同一個主鍵存在兩張包含不同特征的表,通過該主鍵的連接,將兩張表進行合并。合并之后,兩張表的行數(shù)沒有增加,列數(shù)是兩張表的列數(shù)之和減一。
函數(shù)的具體參數(shù)為:

merge(left,right,how='inner',on=None,left_on=None,right_on=None,
left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True)
  • 1
  • 2
  • on=None 指定連接的列名,若兩列希望連接的列名不一樣,可以通過left_on和right_on 來具體指定
  • how=’inner’,參數(shù)指的是左右兩個表主鍵那一列中存在不重合的行時,取結(jié)果的方式:inner表示交集,outer 表示并集,left 和right 表示取某一邊。
    舉例如下
import pandas as pd
df1 = pd.DataFrame([[1,2,3],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2','x3'])
df2 = pd.DataFrame([[1,2],[4,6],[3,9]],columns=['x1','x4'])
print df1
print df2
df3 = pd.merge(df1,df2,how = 'left',on='x1')
print df3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在這里我分別設置了兩個DataFrame類別的變量df1,df2,(平常我們用的表csv文件,讀取之后也是DataFrame 格式)。然后我設置 on=’x1’,即以兩個表中的x1為主鍵進行連接,設置how=’left’ ,即是以兩個表中merge函數(shù)中左邊那個表的行為準,保持左邊表行數(shù)不變,拿右邊的表與之合并。結(jié)果如下:

片描述
第一個結(jié)果為how=’left’的情況。第二個結(jié)果為how=’inner’的情況。
注意:在how=’left’設置后,左邊行之所以能夠保持不變,是因為右邊的表主鍵列沒有重復的值,x下面我會舉個例子作為思考題:
這里寫圖片描述
這是兩張表,分別為df1,df2;

第一個問題:
在默認情況下即merge(df1,df2)其他參數(shù)為默認值的返回結(jié)果是 什么?
第二個問題:
在加上how=’left’之后的返回結(jié)果是什么?
看完了問題之后,返回去看這兩張表,不著急看答案,仔細想想。

這里寫圖片描述

這兩個問題明白之后,表之間的連接和映射應該都能夠明白了。

2.concat

concat 與其說是連接,更準確的說是拼接。就是把兩個表直接合在一起。于是有一個突出的問題,是橫向拼接還是縱向拼接,所以concat 函數(shù)的關(guān)鍵參數(shù)是axis 。
函數(shù)的具體參數(shù)是:

concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)
  • 1
  • objs 是需要拼接的對象集合,一般為列表或者字典
  • axis=0 是行拼接,拼接之后行數(shù)增加,列數(shù)也根據(jù)join來定,join=’outer’時,列數(shù)是兩表并集。同理join=’inner’,列數(shù)是兩表交集。

在默認情況下,axis=0為縱向拼接,此時有

concat([df1,df2]) 等價于 df1.append(df2)
  • 1

在axis=1 時為橫向拼接 ,此時有

concat([df1,df2],axis=1) 等價于 merge(df1,df2,left_index=True,right_index=True,how='outer')
  • 1

舉個例子

import pandas as pd

df1 = pd.DataFrame({'key':['a','a','b','b'],'data1':range(4)})
print df1
df2 = pd.DataFrame({'key':['b','b','c','c'],'data2':range(4)})
print df2
print pd.concat([df1,df2],axis=1)
print pd.merge(df1,df2,left_index=True,right_index=True,how='outer')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

這里寫圖片描述

參考文獻:
pandas 數(shù)據(jù)規(guī)整

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多