pandas 第三節 merge用法

2021-10-01 15:43:46 字數 2432 閱讀 4983

join是按照行索引來關聯操作,列名不能相同

df1.join(df2) #返回df1的行數,df1和df2的所有列名 值沒有的話用nan

merge是按照列索引來關聯操作,和關係型資料庫很相近

1. df1.merge(df2,on=0) #等價於df1.0=df2.0

0 1_x 2 3 4 1_y

0 18 15 19 15 12 10

1 18 15 19 15 12 11

2 16 13 11 15 18 13

select * from df1

join df2 on df1.[0]=df2.[0]

2. df1.merge(df2,left_on=3,right_on=0) #預設是inner

0_x 1_x 2 3 4 0_y 1_y

0 11 18 12 18 14 18 10

1 11 18 12 18 14 18 11

select * from df1

join df2 on df1.[3]=df2.[0]

3. df1.merge(df2,left_on=3,right_on=0,how="outer")

0_x 1_x 2 3 4 0_y 1_y

0 18.0 15.0 19.0 15 12.0 nan nan

1 16.0 13.0 11.0 15 18.0 nan nan

2 10.0 16.0 15.0 14 16.0 nan nan

3 11.0 18.0 12.0 18 14.0 18.0 10.0

4 11.0 18.0 12.0 18 14.0 18.0 11.0

5 nan nan nan 19 nan 19.0 10.0

6 nan nan nan 16 nan 16.0 13.0

select * from df1

full outer join df2 on df1.[3]=df2.[0]

4. df1.merge(df2,left_on=3,right_on=0,how="left")

0_x 1_x 2 3 4 0_y 1_y

0 18 15 19 15 12 nan nan

1 10 16 15 14 16 nan nan

2 11 18 12 18 14 18.0 10.0

3 11 18 12 18 14 18.0 11.0

4 16 13 11 15 18 nan nan

select * from df1

left join df2 on df1.[3]=df2.[0]

5. df1.merge(df2,left_on=3,right_on=0,how="right")

0_x 1_x 2 3 4 0_y 1_y

0 11.0 18.0 12.0 18 14.0 18 10

1 11.0 18.0 12.0 18 14.0 18 11

2 nan nan nan 19 nan 19 10

3 nan nan nan 16 nan 16 13

select * from df1

right join df2 on df1.[3]=df2.[0]

分組 group

grouped=df2.groupby([0]) #pandas.core.groupby.generic.dataframegroupby

遍歷分組

for i,j in grouped:

print(type(i),type(j))

print("$"*50)

print(i)

print("-"*50)

print(j)

print("*"*50

c=grouped.count()

select [0],count([1]),count([2])

from df2

group by [0]

編譯原理 第三節

我們知道世界上存在很多種語言 我們可以把他們分為自然語言 人們日常交流的工具 和程式語言。自然語言複雜且難以描述,程式語言結構規整,便於處理。但兩者又有共性,即核心都由語法和語義兩部分組成。那什麼是語言呢?首先來看一下字母表定義 字母表是元素的非空有窮集合。字母表包含了語言中允許出現的全部符號。例如...

Itween筆記 第三節

itween關於動畫執行的補充.itween.camerafadefrom itween.hash amount 1f,time 2f 在兩秒結束後.itween.camerafadefrom itween.hash amount 1f,time 2f,oncomplete itweentest o...

面向對像第三節

提高了 的復用性 讓類與類之間發生關係有了這個關係 才有後面的多型 繼承是物件導向的三大特性之一 可以層層繼承 issubclass 檢查乙個類是否是另乙個類的子類 object是所有類的父類 如果在子類中有和父類重名的方法.通過子類的例項去呼叫方法時,會先在子類裡面找,再到父類裡面找,若還是沒有找...