columns overlap but no suffix specified: Index(['data1', 'data2'], dtype='object')解决方法
程序员文章站
2024-03-03 16:44:52
...
记录一下错误:
columns overlap but no suffix specified: Index(['data1', 'data2'], dtype='object')
首先说明该错误是由于使用pandas中的join方法连接两个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')
,然后发现是两个DataFrame 的列名重复了,join不会像merge一样,merge会将重名的列明自动加上_x,_y
加以区分,而join直接报错。
所以,我们的解决方法是修改其列明就好了。
常用的有两种方法:
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'))
下一篇: .net邮箱发布邮箱信息的实例