2017-09-27 1 views
1

Ich habe eine CSV, aus der ich die Kosten jeden Monat summieren muss basierend auf dem Monat, in dem das Startdatum fällt.Wie man eine Spalte basierend auf dem Datumsbereich summiert --- Python3

Was ist der beste Weg, Coverage Start Date zu einem Datum zu ändern, und summieren alle Gebühren in einem bestimmten Monat mit Pandas?

Hier ist, wie die Daten im CSV erscheint:

Coverage Start Date  Coverage End Date  AMOUNT 
20170902    20170930    0.37 
20170905    20170930    11 
20170815    20170831    0.37 
20170909    20170930    0.37 
+0

2 Schritte: 1) Verwenden Sie einen Konverter (siehe: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html), der der Spalte entspricht, die Sie ändern möchten, und extrahieren Sie dann die Monat, Tag, Jahr-Info für das Datum und schließlich konvertieren Sie es mit Datetime. 2) Wenn Ihre Spalten korrekt konvertiert wurden, können Sie innerhalb eines Rahmens Rahmen auswählen und die Preise in den Ergebnissen summieren. – jrd1

Antwort

1

Sie Angenommen python3 verwenden,

data = {'Coverage Start Date': ['20170902', '20170905', `'20170815'],'Coverage End Date':['20170930', '20170930', '20170831'] , 'AMOUNT': [0.37, 11, 0.37]}` 
df = pd.DataFrame(data) 

Nun konvertieren in datetime Index

df['Coverage End Date'] = pd.to_datetime(df['Coverage End Date']) 
df['Coverage Start Date'] = pd.to_datetime(df['Coverage Start Date']) 

Und dann, erstellen Sie Ihr Startdatum als Index,

df = df.set_index(df['Coverage Start Date']) 

Und dann verwenden, TimeGrouper

new_df = df.groupby(pd.TimeGrouper('M')).sum() 

Ausgang,

     AMOUNT 
Coverage Start Date 
2017-08-31    0.37    
2017-09-30    11.37 
0

Ich mag den Code von i.n.n.m. Allerdings anzuwenden, um die Datumszeitfunktion, um mehrere Spalten können Sie die unten

data = {'Coverage Start Date': ['20170902', '20170905', '20170815'],'Coverage End Date':['20170930', '20170930', '20170831'] , 'AMOUNT': [0.37, 11, 0.37]} 
df = pd.DataFrame(data) 
df.iloc[:, 1:] = df.iloc[:, 1:].apply(pd.to_datetime) 

    AMOUNT Coverage End Date Coverage Start Date 
0 0.37   2017-09-30   2017-09-02 
1 11.00   2017-09-30   2017-09-05 
2 0.37   2017-08-31   2017-08-15 

verwenden Und dann gehen sie über die Gruppierung!

Verwandte Themen