2017-04-19 206 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