2017-10-18 5 views
1

私は新しいエントリを見つけるために2つのデータフレームをマージしようとしています。現在、2つのデータフレームは同一です。パンダマージすべての行を複製する

DATAFRAME A

BusinessName      Ubi    IdentifierValue 
0 CHULA VISTA PAINTING/SERVICES  604000010  CHULAVP841MQ 
1 MANU TECH LLC      604000040  MANUTTL833BL 
2 HAWTHORN LANDSCAPE MTRILS INC  604000042  HAWTHLM845MM 
3 M M R CONSTRUCTION LLC    604000082  MMRCOCL848MM 
4 HURTADO PAINTING     604000120  HURTAP*831JJ 

DATAFRAME B

 BusinessName     Ubi    IdentifierValue 
0 CHULA VISTA PAINTING/SERVICES  604000010  CHULAVP841MQ 
1 MANU TECH LLC      604000040  MANUTTL833BL 
2 HAWTHORN LANDSCAPE MTRILS INC  604000042  HAWTHLM845MM 
3 M M R CONSTRUCTION LLC    604000082  MMRCOCL848MM 
4 HURTADO PAINTING     604000120  HURTAP*831JJ 

Iはユービーアイにマージするときには、すべての行を複製します。

A = A[['Ubi']] 
B = B[['Ubi']] 
A = A.merge(B, how='outer', indicator=True) 
A 


    Ubi   _merge 
0 604000010.0 left_only 
1 604000040.0 left_only 
2 604000042.0 left_only 
3 604000082.0 left_only 
4 604000120.0 left_only 
5 604000010.0 right_only 
6 604000040.0 right_only 
7 604000042.0 right_only 
8 604000082.0 right_only 
9 604000120.0 right_only 

期待どおりに機能しますが、ビジネス名だけでマージすると、

A = A[['BusinessName']] 
B = B[['BusinessName']] 
A = A.merge(B, how='outer', indicator=True) 
A 

BusinessName      _merge 
0 CHULA VISTA PAINTING/SERVICES both 
1 MANU TECH LLC     both 
2 HAWTHORN LANDSCAPE MTRILS INC both 
3 M M R CONSTRUCTION LLC   both 
4 HURTADO PAINTING    both 

私はUbiをマージすることをお勧めしますが、問題を見つけることができません。 Ubi列はInt64ですが、他の列はObjectsです。 Ubiカラムをマージすると、カラムタイプがfloat64に切り替わります。

答えて

1

異なるタイプの問題があり、同じ必要があります。

はそれを確認してください:

print (A['Ubi'].dtype) 
print (B['Ubi'].dtype) 

だから必要があります。

A['Ubi'] = A['Ubi'].astype(str) 
B['Ubi'] = B['Ubi'].astype(str) 

または:

A['Ubi'] = A['Ubi'].astype(int) 
B['Ubi'] = B['Ubi'].astype(int) 
+1

はい、問題でしたdtypesを最初 – Rockbar

+0

チェック、ありがとうございました! –

関連する問題