python 把幾個DataFrame合並成一個DataFrame——merge,append,join,conca


1 . merge

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False)
left︰ 對象
right︰ 另一個對象
on︰ 要加入的列 (名稱)。必須在左、 右綜合對象中找到。如果不能通過 left_index 和 right_index 是假,將推斷 DataFrames 中的列的交叉點為連接鍵
left_on︰ 從左邊的綜合使用作為鍵列。可以是列名或數組的長度等於長度綜合
right_on︰ 從正確的綜合,以用作鍵列。可以是列名或數組的長度等於長度綜合
left_index︰ 如果為 True,則使用索引 (行標簽) 從左綜合作為其聯接鍵。在與多重 (層次) 的綜合,級別數必須匹配聯接鍵從右綜合的數目
right_index︰ 相同用法作為正確綜合 left_index
how︰ 之一 '''''外在''內部'。默認為內部。每個方法的更詳細說明請參閱︰
sort︰ 綜合通過聯接鍵按字典順序對結果進行排序。默認值為 True,設置為 False將提高性能極大地在許多情況下
suffixes︰ 字符串后綴並不適用於重疊列的元組。默認值為 ('_x''_y')。
copy︰ 即使重新索引是不必要總是從傳遞的綜合對象,復制的數據 (默認值True)。在許多情況下不能避免,但可能會提高性能 / 內存使用情況。可以避免復制上述案件有些病理但盡管如此提供此選項。
indicator︰ 將列添加到輸出綜合呼吁 _merge 與信息源的每一行。_merge 是絕對類型,並對觀測其合並鍵只出現在 '' 的綜合,觀測其合並鍵只會出現在 '正確' 的綜合,和兩個如果觀察合並關鍵發現在兩個 right_only left_only 的值。

  1) . result = pd.merge(left, right, on='key')

  2) . result = pd.merge(left, right, on=['key1', 'key2'])

  3) . result = pd.merge(left, right, how='left', on=['key1', 'key2'])

  4) . result = pd.merge(left, right, how='right', on=['key1', 'key2'])

  5) . result = pd.merge(left, right, how='outer', on=['key1', 'key2'])

2 . append

  1) . result = df1.append(df2)

 

 

  2) . result = df1.append(df4)

  3) . result = df1.append([df2, df3])

  4) . result = df1.append(df4, ignore_index=True)

 

3 . join

left.join(right, on=key_or_keys)
pd.merge(left, right, left_on=key_or_keys, right_index=True,
      how='left', sort=False)

1) . result = left.join(right, on='key')

2) . result = left.join(right, on=['key1', 'key2'])

3) . result = left.join(right, on=['key1', 'key2'], how='inner')

4 . concat

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
objs︰ 一個序列或系列、 綜合或面板對象的映射。如果字典中傳遞,將作為鍵參數,使用排序的鍵,除非它傳遞,在這種情況下的值將會選擇 (見下文)。任何沒有任何反對將默默地被丟棄,除非他們都沒有在這種情況下將引發 ValueError。
axis: {0,1,...},默認值為 0。要連接沿軸。
join: {'內部'''},默認 ''。如何處理其他 axis(es) 上的索引。聯盟內、 外的交叉口。
ignore_index︰ 布爾值、 默認 False。如果為 True,則不要串聯軸上使用的索引值。由此產生的軸將標記 0,...,n-1。這是有用的如果你串聯串聯軸沒有有意義的索引信息的對象。請注意在聯接中仍然受到尊重的其他軸上的索引值。
join_axes︰ 索引對象的列表。具體的指標,用於其他 n-1 軸而不是執行內部/外部設置邏輯。
keys︰ 序列,默認為無。構建分層索引使用通過的鍵作為最外面的級別。如果多個級別獲得通過,應包含元組。
levels︰ 列表的序列,默認為無。具體水平 (唯一值) 用於構建多重。否則,他們將推斷鑰匙。
names︰ 列表中,默認為無。由此產生的分層索引中的級的名稱。
verify_integrity︰ 布爾值、 默認 False。檢查是否新的串聯的軸包含重復項。這可以是相對於實際數據串聯非常昂貴。
副本︰ 布爾值、 默認 True。如果為 False,請不要,不必要地復制數據。
frames = [df1, df2, df3]
result = pd.concat(frames)

result = pd.concat(frames, keys=['x', 'y', 'z'])
result.ix['y']

result = pd.concat([df1, df4], axis=1)

result = pd.concat([df1, df4], axis=1, join='inner')

result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])

result = pd.concat([df1, df4], ignore_index=True)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM