2016-04-04 24 views
1

Şimdi ben bazı veriler aşağıda benziyor vardır:Pandalarda çoklu sütunlarda nasıl toplanabilirim?

song_id        artist_id      0 days 1 days 2 days 
1 0919b5ed4ce2649f61bcc6c21fadab12 0c80008b0a28d356026f4b1097041689 0 0 0 
2 8a0777df37bf6a0f3384d63a47d4d21b 0c80008b0a28d356026f4b1097041689 0 1 0 
3 b61bc45712ee40c3f4a37dd4d063ad52 0c80008b0a28d356026f4b1097041689 0 0 0 
4 a2fbe29da3a760d7467b8a7b3247a9c8 0c80008b0a28d356026f4b1097041689 0 0 1 
5 b5e92cb9ff2126189c19305cf148b25d 0c80008b0a28d356026f4b1097041689 0 0 0 

Ve artist_id göre gruplandırmak bunları istiyoruz ve 0 days, 1 days ve 2 days üzerinde toplamını araya geldiğini ve hayran neden olsun.

 artist_id      0 days 1 days 2 days 
0  0c80008b0a28d356026f4b1097041689 0 1 1 

Ben
df.groupby('artist_id').sum() 

çalıştı Ama bir hata yükseltmek.

TypeError: Cannot compare type 'Timedelta' with type 'str' 

df.info gösterir:

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 10842 entries, 0 to 10841 
Columns: 185 entries, song_id to 182 days 00:00:00 
dtypes: float64(183), object(2) 
memory usage: 15.4+ MB 

nasıl çözebilir

o pandaların yolunu kullanarak?

Herhangi bir yardım memnuniyetle karşılanır.

+0

Hata neydi? Benim için çok iyi çalışıyor. – jezrael

+1

'df.info()' ifadesi nümerik olmayan bir çeşitliliğe sahipse, 'sum' başarısız olur – EdChum

+0

@jezrael Soruyu güncelledim. Yorumunuz için teşekkürler. – KIDJourney

cevap

1

Sen astype kullanabilirsiniz:

df.columns = df.columns.astype(str) 
+0

Cevabınız için teşekkür ederiz, 'sum() işlevi başarısız oldu çünkü sütunlarda zaman çizelgesi var ve bunlar birleştirilemez. – KIDJourney

+0

:) Anladığım kadarıyla, bir sonraki olası çözümü "astype" ile ekliyorum. – jezrael

0

Teşekkür herkese.

adım

df.columns = map(str,df.columns) 

df.groupby('artist_id').sum() 

eser uygulandıktan sonra.