columns overlap but no suffix specified:Index(['data 1','data 2'],dtype='object')解決方法


エラーを記録します.
columns overlap but no suffix specified: Index(['data1', 'data2'], dtype='object')

まず,このエラーはpandasのjoinメソッドを用いて2つのDataFrameを接続したために発生したエラーであることを説明する.エラーの原因:カラム名の重複解決方法:カラム名を重複しないように変更する
df = pd.DataFrame({'data1':np.random.rand(5),
                  'data2':np.random.rand(5),
                  'key1':list('aabba'),
                  'key2':['one','two','one','two','one']})
print(df)

#     df        ,      ,       
# 1.     
df_mean = df.groupby('key1').mean()
print(df_mean)
print(pd.merge(df, df_mean, how='inner', left_on='key1', right_index=True))

# 2. transform
a = df.groupby('key1').transform(np.mean)
print(a)
print(df.join(a, how='inner'))

最後の文を実行すると、columns overlap but no suffix specified: Index(['data1', 'data2'], dtype='object')とエラーが発生し、2つのDataFrameのカラム名が重複していることがわかりました.joinはmergeのように、mergeは重複したカラム名に_x,_yを自動的に加えて区別し、joinは直接エラーを報告します.だから、私たちの解決策はその列明を修正すればいいのです.
よく使われる方法は2つあります.1.カラム名をcolumnで変更する
a = df.groupby('key1').transform(np.mean)
print(a)
a.columns = ['a', 'b']
print(df.join(a, how='inner'))

2.add_を使うprofixカラム名に指定した文字列接頭辞を追加
a = df.groupby('key1').transform(np.mean).add_prefix('mean_')
print(a)
print(df.join(a, how='inner'))