记录一下错误:
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