2016-06-17 5 views
1

Ich habe eine DataFrame wie:Summe und die Anzahl von Daten aus Spalten

1  member_id application_name active_seconds 
2   192180    Opera 6 
3   192180    Opera 7 
4   192180    Chrome 243 
5   5433112   Chrome 52 
6   5433112   Opera 34 
7   5433112   Chrome 465 

Und ich versuche, es zu gruppieren.

Ich möchte application_name ID und Summe active_seconds zu application_name zählen. Ich benutze df.groupby(['member_id', 'application_name'])['event_duration'].sum() und df.groupby(['member_id', 'application_name']).size() und zweite Rück mir korrekten Wert, aber ersten Rück

 member_id application_name active_seconds 
     192180    Opera    67 
     192180    Chrome   243 
     5433112   Chrome   52465 
     5433112   Opera    34 

Was ich falsch gemacht?

Antwort

3

Ihre active_seconds scheint von dtypestring zu sein, so sum() verkettet sie.

Wenn Sie df.info() tun, active_seconds zeigt wahrscheinlich object als dtype, was bedeutet, sie sind string statt int. Do

df.active_seconds = pd.to_numeric(df.active_seconds) 

konvertieren. Falls es Fehler gibt, können Sie das Schlüsselwort errors verwenden, wie in der docs erläutert.

+0

'ValueError: String kann nicht analysiert werden' – ldevyataykina

+0

Werfen Sie einen Blick auf alle Daten in' active_seconds' - es muss einige geben, die nicht in Zahlen konvertiert werden können. Die Fehlermeldung zeigt an, dass der "dtype" tatsächlich "string" ist. – Stefan

+0

Warum können einige nicht zu Zahlen konvertieren? – ldevyataykina