2017-07-12 5 views
0

私は2番目のデータセット(df2)からデータを入力するデータセット(df1)を1つ持っています。両方のデータフレームに1つのカラムしかなく、 df1とdf2の両方のインデックスを取得できるので、インデックスをマージすることができます。私は出力がなりたい何データセットの結合Df1のインデックス上のパンダ

df = pd.read_excel('Data.xlsx', sheetname= 'Dataset1') 
df2 = pd.read_excel('Data.xlsx', sheetname= 'Dataset2') 
df1.set_index("ORG_ID", inplace=True) 
df2.set_index("ORG_ID", inplace=True) 
df3 = df1.merge(df2.ix[:,df2.columns-df1.columns], left_index=True, right_index=True, how="outer") 

は、インデックス(ORG_IDs)を含むDF1からすべてのデータを、一覧表示されますAA新しいデータセット(DF3)で、ベースのデータに記入してDF2からのすべての新しい列が含まdf1にリストされているORG_IDに ここでは、pythonは私に新しいデータフレーム(df3)を与え、df1のデータを入力してから、df1のORG_IDの下にある2番目のデータセット(df2)のOrg_idsをすべて追加します。

私もcombine_firstを使ってみましたが、同様の結果が得られたようです。

df3= df1.combine_first(df2) 


Dataset1 (df1) 
ORG_ID COUNTRY TOWN STORE PRODUCT PRICE 
1 Spain Madrid Pink Garment 100 
2 Greece Chania White Toy 200 
3 U.K Manchester Red Garment 300 
4 Italy Rome Red Accessory 500 
5 Spain Marbella Blue Accessory 20 
6 Greece Chania Green Garment 25 
7 U.K Manchester Pink Toy 36 
8 Italy Siena Red Accessory 150 
9 Spain Barcelona White Toy 200 
10 Greece Corfu Blue Accessory 500 

DATASET2(DF2)

ORG_ID CUSTOMER TYPE PARENT REGION 
5 A Pop Rose Europe 
10 A Cry Tulip Europe 
24 C Fig Lily Europe 
89 G Pop Rose Europe 
6 R Fig Lily Europe 
4 Y Pop Rose Europe 
1 T Fig Tulip Europe 
7 H Pop Tulip Europe 
8 S Fig Rose Europe 

Dataset3(DF3) - 私は

ORG_ID COUNTRY TOWN STORE PRODUCT PRICE CUSTOMER TYPE PARENT REGION 
1 Spain Madrid Pink Garment 100 T Fig Tulip Europe 
2 Greece Chania White Toy 200 NaN NaN NaN NaN 
3 U.K Manchester Red Garment 300 NaN NaN NaN NaN 
4 Italy Rome Red Accessory 500 Y Pop Rose Europe 
5 Spain Marbella Blue Accessory 20 A Pop Rose Europe 
6 Greece Chania Green Garment 25 R Fig Lily Europe 
7 U.K Manchester Pink Toy 36 H Pop Tulip Europe 
8 Italy Siena Red Accessory 150 S Fig Rose Europe 
9 Spain Barcelona White Toy 200 NaN NaN NaN NaN 
10 Greece Corfu Blue Accessory 500 A Cry Tulip Europe 

答えて

2

をしたいと思いますどのようなあなたのdatafamesに​​する必要はありません。 mergeにはonパラメータを使用し、how='left'を使用できます。

df1 = pd.read_excel('Data.xlsx', sheetname= 'Dataset1') 
df2 = pd.read_excel('Data.xlsx', sheetname= 'Dataset2') 

df3 = df1.merge(df2, how='left', on='ORG_ID') 

出力:

ORG_ID COUNTRY  TOWN STORE PRODUCT PRICE CUSTOMER TYPE PARENT \ 
0  1 Spain  Madrid Pink Garment 100  T Fig Tulip 
1  2 Greece  Chania White  Toy 200  NaN NaN NaN 
2  3  U.K Manchester Red Garment 300  NaN NaN NaN 
3  4 Italy  Rome Red Accessory 500  Y Pop Rose 
4  5 Spain Marbella Blue Accessory  20  A Pop Rose 
5  6 Greece  Chania Green Garment  25  R Fig Lily 
6  7  U.K Manchester Pink  Toy  36  H Pop Tulip 
7  8 Italy  Siena Red Accessory 150  S Fig Rose 
8  9 Spain Barcelona White  Toy 200  NaN NaN NaN 
9  10 Greece  Corfu Blue Accessory 500  A Cry Tulip 

    REGION 
0 Europe 
1  NaN 
2  NaN 
3 Europe 
4 Europe 
5 Europe 
6 Europe 
7 Europe 
8  NaN 
9 Europe 
関連する問題