2016-07-07 14 views
1

に参加:パンダのデータフレーム:エラーが、私はこの二つのデータフレームを持っている

1) df 
STATCODE OCCDATE  COWNNUM  AGNTNUM 
IF   20130725 50033901 61002624 
IF   20130725 50033901 61002624 
IF   20130725 50033901 61002624 
IF   20130725 50033901 61002624 

2) dfCus 
CLNTNUM  CLTTYPE  CLTSEX 
50033901 P   M 
50033901 P   M 
50055927 P   F 

は、私は標準の命名で列を作成するには、このコードを実行し、私はその列のデータフレームに参加したいです。

df.index.names = ['ID'] 
dfCus.index.names = ['ID'] 
df['CLNTNUM'] = df.index 
dfCus['CLNTNUM'] = dfCus.index 
data = df.join(dfCus, how='inner', on='CLNTNUM') 

しかし、私はこのエラーを取得する:

ERROR: 
ValueError: columns overlap but no suffix specified: Index([u'CLNTNUM'], dtype='object') 

あなたは私が間違っているのか理解に役立つことはできますか?私はあなたがmergeが必要だと思う おかげ AC

+0

は 'join'はLHSとRHSサフィックスを指定する必要があります値が衝突することがあります。この場合、 'df.merge(dfCus、left_index = True、right_index = True)' – EdChum

答えて

1

は、パラメータhow='inner'はデフォルトであり、その属性を省略してもかまいませ:

data = df.merge(dfCus, left_index=True, right_index=True) 

と、このコードは属性を省略してもかまいませ:

df.index.names = ['ID'] 
dfCus.index.names = ['ID'] 
df['CLNTNUM'] = df.index 
dfCus['CLNTNUM'] = dfCus.index 

EDIT1:

サンプルでは、​​COWNNUMのの列に参加する必要があるようですとCLNTNUMdfCusで - しかし、出力があるので、あなたは、重複する値が設定されています

print (df) 
    STATCODE OCCDATE COWNNUM AGNTNUM 
0  IF 20130725 50033901 61002624 
1  IF 20130725 50033901 61002624 
2  IF 20130725 50033901 61002624 
3  IF 20130725 50033901 61002624 

print (dfCus) 
    CLNTNUM CLTTYPE CLTSEX 
0 50033901  P  M 
1 50033901  P  M 
2 50055927  P  F 

df = df.merge(dfCus, left_on='COWNNUM', right_on='CLNTNUM') 
print (df) 
    STATCODE OCCDATE COWNNUM AGNTNUM CLNTNUM CLTTYPE CLTSEX 
0  IF 20130725 50033901 61002624 50033901  P  M 
1  IF 20130725 50033901 61002624 50033901  P  M 
2  IF 20130725 50033901 61002624 50033901  P  M 
3  IF 20130725 50033901 61002624 50033901  P  M 
4  IF 20130725 50033901 61002624 50033901  P  M 
5  IF 20130725 50033901 61002624 50033901  P  M 
6  IF 20130725 50033901 61002624 50033901  P  M 
7  IF 20130725 50033901 61002624 50033901  P  M 
1

lsuffixを使用して、すなわち、解決策を見つけた:

data = df.join(dfCus, how='inner', on='CLNTNUM',lsuffix='_l') 
関連する問題