2017-04-19 161 views
0

所以我试图将两个数据帧连接在一起来对另一个数据帧进行绘图。加入熊猫数据框的问题

我想:

genders2 = np.array(male_grades[['grade_difs']].join(female_grades[['grade_difs']], how='outer')) 

并且得到错误:

AttributeError: 'Series' object has no attribute 'join' 

我能够在节目中较早使用这种类型的代码,我正在写:

genders = np.array(male[['MaleAge']].join(female[['FemaleAge']], how='outer')) 

如果我太模糊,让我知道和生病尝试添加更多的代码,使其更有意义或什么。

代码:之前

data['grade_difs'] = (data['OGrade'] - data['IGrade']) 

female_grades = data[data['Gender'] == 'F']['grade_difs'] 
male_grades = data[data['Gender'] == 'M']['grade_difs'] 
+0

错误表明'male'是'pd.Series',当你用'male [[MaleAge']]切片时'你会得到另一个'pd.Series' ...和'pd .Series'没有'join'方法。你想检查你的其他代码,看看'男'成为'pd.Series'如果你不打算这样做。 – piRSquared

+0

male_grades?我刚刚编辑它以显示代码。 – ksalerno

+0

也许pd.concat会帮助你的情况。 http://pandas.pydata.org/pandas-docs/stable/merging.html –

回答

1

两点

  1. 你肯定获得在male_grades一个pd.Series。这将修复它

    female_grades = data[data['Gender'] == 'F'][['grade_difs']] 
    male_grades = data[data['Gender'] == 'M'][['grade_difs']] 
    
  2. 但我宁愿做这样

    female_grades = data.loc[data['Gender'] == 'F', ['grade_difs']] 
    male_grades = data.loc[data['Gender'] == 'M', ['grade_difs']] 
    

之后,你需要确保你在你的join的情况下指定后缀你有共同的列名称。通常在连接的一侧指定后缀就足够了。

male[['MaleAge']].join(female[['FemaleAge']], how='outer', rsuffix='_') 
+0

然而,谢谢你;我没有收到错误:ValueError:列重叠,但没有指定后缀:索引(['grade_difs'],dtype ='object')这是否意味着数据框架的索引不排队? – ksalerno

+0

因此,您已经过去了第一个错误并且遇到了另一个错误。那很好。这是进步:-)这是因为你有共同的列名称。当你没有提供完整的例子时,很难做到这一点。您应该始终提供我们称之为最小且完整的可验证示例或[*** MCVE ***](http://stackoverflow.com/help/mcve)。我会更新我的答案。 – piRSquared

+0

@ksalerno,请阅读[如何制作好可重复的熊猫示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)和[编辑](http:///stackoverflow.com/posts/43499776/edit)你的帖子据此 – MaxU