目錄
- pandas.merge可根據一個或多個鍵將不同DataFrame中的行合並起來
-
# 在未指定連接鍵的情況下,merge會將重疊列的列名當做鍵 pd.merge(left, right) # 指定“on”作為連接鍵,left和right兩個DataFrame必須同時存在“on”列,連接鍵也可N對N(少用) pd.merge(left, right, on="key") pd.merge(left, right, on=["key1", "key2"]) # 指定left的連接鍵為“lkey”,right的連接鍵為“rkey” pd.merge(left, right, left_on="lkey", right="rkey") # suffixes:用於追加到重疊列名的末尾,默認為("_x", "_y") pd.merge(left, right, on="key", suffixes=("_left", "_right")) # 指定連接方式:“inner”(默認),“left”,“right”,“outer” pd.merge(left, right, how="outer")
- 多對多連接產生的是行的笛卡爾積
- 常用方式:連接方式為“left”,right的連接鍵要唯一(去除重復值),通過right的數據補全left的數據
索引上的合並(可用join代替,而且join更方便)
- 當DataFrame的連接鍵位於其索引中,可以使用 left_index=True 和 right_index=True
-
# 索引和索引連接 pd.merge(left, right, left_index=True, right_index=True) # "key"和索引連接 pd.merge(left, right, left_on="key", right_index=True) # 層次化索引 pd.merge(left, right, left_on=["key1", "key2"], right_index=True)
- DataFrame的join實例方法,是為了方便實現索引合並
-
# 用left的索引和right的索引進行merge left.join(right) # 用left的索引和right的“key”進行merge left.join(right, on="key") # 層次化索引 left.join(right, on=["key1", "key"]) # join可以合並兩張以上的表,而merge只能合並兩張表 left.join([right1, right2], how="outer")
- pandas.concat可以沿着一條軸將多個表對象堆疊到一起:因為模式how模式是“outer”
-
# 默認 axis=0 上下拼接,列column重復的會自動合並 pd.concat([df1, df2], axis=0) # axis=1 左右拼接,行raw/index重復的會自動合並 pd.concat([df1, df2], axis=1) # 忽略df1和df2原來的index,重新給新的DataFrame設置從0開始的index pd.concat([df1,df2], ignore_index=True)
- 使用場景:表頭一致的多張表,進行連接(上下連接)
df1.append(df2).append(df3)
- 使用場景:有兩張表left和right,一般要求它們的表格結構一致,數據量也一致,使用right的數據去填補left的數據缺漏
- 如果在同一位置left與right數據不一致,保留left的數據
df1.combin_first(df2)