columns overlap but no suffix specified: Index([‘data1‘, ‘data2‘], dtype=‘object‘)解决方法

导读:本篇文章讲解 columns overlap but no suffix specified: Index([‘data1‘, ‘data2‘], dtype=‘object‘)解决方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

记录一下错误:

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'))

这里是引用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84769.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!