アリのインタビューの質問:パンダのデータをマージするための5つの機能、それぞれに独自のメリットがあります!

数日前、あるグループで、アリからインタビューを受けたと言っている友人に会い、パンダの使い方について尋ねました。質問の1つは、パンダでデータを組み合わせる5つの方法です。

本日はこの機会に、パンダのデータをマージするための5つの機能を紹介します。ただし、各機能について、ここで詳しく説明するつもりはありません。具体的な使用法については、パンダの公式ドキュメントを参照してください。

  • 結合は、主にインデックスベースの水平方向のマージとスプライシングに使用されます。
  • マージは主に、指定された列に基づく水平方向のマージとスプライシングに使用されます。
  • concatは、水平および垂直のマージとスプライシングに使用できます。
  • appendは、主に垂直方向の追加に使用されます。
  • 結合関数を使用して、2つのデータフレームを列ごとに結合できます。

加入

結合は、インデックスに基づく水平スプライシングです。インデックスが同じ場合、水平スプライシングが直接実行されます。インデックスに一貫性がない場合は、Nan値で埋められます。

一貫性のあるインデックス

x = pd.DataFrame({
    
    'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                    index=[0, 1, 2])
y = pd.DataFrame({
    
    'C': ['C0', 'C2', 'C3'],
                      'D': ['D0', 'D2', 'D3']},
                    index=[0, 1, 2])
x.join(y)

結果は次のとおりです。
ここに画像の説明を挿入

インデックスの不整合

x = pd.DataFrame({
    
    'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                    index=[0, 1, 2])
y = pd.DataFrame({
    
    'C': ['C0', 'C2', 'C3'],
                      'D': ['D0', 'D2', 'D3']},
                    index=[1, 2, 3])
x.join(y)

結果は次のとおりです。
ここに画像の説明を挿入

マージ

マージは、指定された列の水平方向のスプライシングに基づいています。この関数は、リレーショナルデータベースの接続方法に似ており、1つ以上のキーに従って異なるDatFrameを接続できます。この関数の一般的なアプリケーションシナリオは、同じ主キーに対して異なるフィールドを持つ2つのテーブルがあり、それらが主キーに従って1つのテーブルに統合されることです。

  • 内部接続、左接続、右接続、外部接続など、接続方法を示すさまざまな方法パラメーターを指定できます。デフォルトは内部です。
x = pd.DataFrame({
    
    '姓名': ['张三', '李四', '王五'],
                     '班级': ['一班', '二班', '三班']})
y = pd.DataFrame({
    
    '专业': ['统计学', '计算机', '绘画'],
                      '班级': ['一班', '三班', '四班']})

pd.merge(x,y,how="left")

結果は次のとおりです。
ここに画像の説明を挿入

concat

concat機能は、縦縫いだけでなく横縫いにも使用できます。

縦縫い

x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
z = pd.concat([x,y],axis=0)
z

結果は次のとおりです。
ここに画像の説明を挿入

横縫い

x = pd.DataFrame({
    
    '姓名': ['张三', '李四', '王五'],
                     '班级': ['一班', '二班', '三班']})
y = pd.DataFrame({
    
    '专业': ['统计学', '计算机', '绘画'],
                      '班级': ['一班', '三班', '四班']})
z = pd.concat([x,y],axis=1)
z

結果は次のとおりです。
ここに画像の説明を挿入

追加

appendは、主にデータを垂直方向に追加するために使用されます。

x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
x.append(y)

結果は次のとおりです。
ここに画像の説明を挿入

混ぜる

Combineは、関数を使用して2つのDataFrameを列ごとに組み合わせることができます。

x = pd.DataFrame({
    
    "A":[3,4],"B":[1,4]})
y = pd.DataFrame({
    
    "A":[1,2],"B":[5,6]})
x.combine(y,lambda a,b:np.where(a>b,a,b))

結果は次のとおりです。
ここに画像の説明を挿入
注:上記の関数は、対応する位置で最大値を返すために使用されます。

おすすめ

転載: blog.csdn.net/weixin_41261833/article/details/120164659