2017-08-24 60 views
1

當我使用下面的代碼:大熊貓的GroupBy和符連接數,而不是對它們求和

print(self.df.groupby(by=[2])[3].agg(['sum'])) 

在下面的數據框:

  0 1  2  3  4  5  6  7 
0   15 LCU Test 1 308.02 170703 ALCU 4868 MS10 
1   16 LCU Test 2 127.37 170703 ALCU 4868 MS10 

的SUM函數沒有正確完成,因爲值列(列3)返回值的連接字符串(308.02127.37),而不是保持各個值的完整性以允許操作。

+1

不能重現您提到的行爲。此外,我使用你的代碼(刪除自我部分後)得到錯誤 – Quickbeam2k1

+1

看起來像你的專欄3類型是一個字符串,而不是一個浮動,嘗試投它 – Deb

+0

如果你提供更多的數據行的行使用groupby會好得多。 – Dark

回答

3

看起來你的第三列是一個字符串。您是否使用dtype=str加載了您的數據框?

此外,儘量不要硬編碼您的列。您可以使用.astypepd.to_numeric投,然後應用sum

self.df.groupby(self.df.columns[2])[self.df.columns[3]]\ 
     .agg(lambda x: pd.to_numeric(x, errors='coerce').sum()) 

或者

self.df.groupby(self.df.columns[2])[self.df.columns[3]]\ 
     .agg(lambda x: x.astype(float).sum()) 
+1

謝謝。我做了一個不同的方式,但會嘗試每個選項,看看什麼效果最好。問題在於該列不是數字。 – RGETLB