2017-03-19 6 views
0

Ich habe den unten genannten Datensatz.Cumsum-Funktion in Python

https://docs.google.com/spreadsheets/d/13GCAXHp5BU4vYU6PdX40wM-Jhp--LeRd9C5oUurbVY4/edit#gid=0

Ich möchte in einer Spalte die kumulierten Werte für Umsatz Differenzgeschäften zu finden. Zum Beispiel sollte der kumulierte Wert für Speicher 2106 der Umsatz seines 176.849

Ich verwende die folgende Funktion

df = df.groupby ('storenumber') [ 'Umsatz']. Cumsum(), aber Ich bekomme nicht das richtige Ergebnis

Kann jemand helfen?

Antwort

0

Hier ist, was ich getan habe, um dieses Problem zu lösen.

import pandas as pd 
import numpy as np 

df = pd.read_csv('data.csv') # get data frame from csv file 

Sie werden nicht numerische Operationen auf Ihre Daten laufen können, wie es ist, weil die Sale (Dollars) Spalte in df nicht als numerischer Typ formatiert ist. Der folgende Codeabschnitt konvertiert die Daten in der Spalte Sale (Dollars) und Suggested answer in den Typ Float und entfernt das Dollarzeichen und die Trennzeichen.

df[df.columns[2:]] = df[df.columns[2:]].replace('[\$,]', '', regex=True).astype(float) 

Dann habe ich das folgende Stück Code den kumulativen Wert für jede eindeutige Store Number zu bekommen.

cum_sales_by_store_number = df.groupby('Store Number')['Sale (Dollars)'].agg(np.sum) 
cum_sales_by_store_number = pd.DataFrame(cum_sales_by_store_number) 

Ausgang für cum_sales_by_store_number:

   Sale (Dollars) 
Store Number 
2106    176849.97 

Ich hoffe, dass dies Ihre Frage beantwortet. Glückliche Kodierung!