merge
通過pandas或DataFrame的merge方法,可以進行兩個DataFrame的連接,這種連接類似于SQL中對兩張表進行的join連接。
- how:指定連接方式。可以是inner, outer, left, right,默認為inner。
- on 指定連接使用的列(該列必須同時出現在兩個DataFrame中),默認使用兩個DataFrame中的所有同名列進行連接。
- left_on / right_on:指定左右DataFrame中連接所使用的列。
- left_index / right_index:是否將左邊(右邊)DataFrame中的索引作為連接列,默認為False。
- suffixes:當兩個DataFrame列名相同時,指定每個列名的后綴(用來區分),默認為_x與_y。
import pandas as pd
import numpy as np
df1 = pd.DataFrame([[1, 2, 3], [3, 4, 5], [5, 6, 7],[7,8,9]], columns=['a', 'b', 'c'])
df2 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['a', 'b', 'c'], index=[1,2,3,4])
df3 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['d', 'e', 'f'], index=[1,2,3,4])
display(df1, df2, df3)
# 根據所有同名字段(標簽名)進行等值連接。
# print(df1.merge(df2, how='left',on='a'))
pd.merge(df1,df2,how='left',on='a')
# 當列名不一樣的時候,可以使用索引拼接數據
pd.merge(df1,df3,how='left',left_index=True, right_index=True)
concat
我們可以通過DataFrame或Series類型的concat方法,來進行連接操作,連接時,會根據索引進行對齊。
- axis:指定連接軸,默認為0。
- join:指定連接方式,默認為外連接。只有【outer:并集,inner:交集】
- keys:可以用來區分不同的數據組。
- join_axes:指定連接結果集中保留的索引。
- ignore_index:忽略原來連接的索引,創建新的整數序列索引,默認為False。
# 在進行concat拼接(堆疊),時,會根據索引進行對齊。如果無法對齊,會產生空值。(NaN)
pd.concat((df1, df3),join='outer', axis=1)
# 相同的列名,按豎直方向堆疊
pd.concat((df1, df2),join='outer', axis=0, ignore_index=True)