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是所有類的父類 如果在子類中有和父類重名的方法.通過子類的例項去呼叫方法時,會先在子類裡面找,再到父類裡面找,若還是沒有找...