Соберите все транзакции за каждый день и сообщите общую сумму, потраченную за этот день - PullRequest
2 голосов
/ 22 сентября 2019

У меня есть DataFrame, который выглядит следующим образом

date    Burned
8/11/2019 7:00  0.0
8/11/2019 7:00  10101.0
8/11/2019 8:16  5.2

У меня есть этот код:

import pandas as pd 
import numpy as np
# Read data from file 'filename.csv' 
# (in the same directory that your python process is based)
# Control delimiters, rows, column names with read_csv (see later) 
df = pd.read_csv("../example.csv") 
# Preview the first 5 lines of the loaded data 



df = df.assign(Burned = df['Quantity'])
df.loc[df['To'] != '0x0000000000000000000000000000000000000000', 'Burned'] = 0.0
# OR:

df['cum_sum'] = df['Burned'].cumsum()
df['percent_burned'] = df['cum_sum']/df['Quantity'].max()*100.0

a=pd.concat([df['DateTime'], df['Burned']], axis=1, keys=['date', 'Burned'])

b=a.groupby(df.index.date).count()

Но я получаю эту ошибку: AttributeError: 'RangeIndex' object has no attribute 'date'

В основномЯ хочу отсортировать все это время просто по дням, поскольку у него есть временные метки в течение дня.Мне все равно, в какое время дня происходили разные вещи, я просто хочу получить общее количество «сгоревших» за день.

1 Ответ

1 голос
/ 22 сентября 2019

Сначала добавьте parse_dates=['DateTime'] к read_csv для столбца преобразования Datetime:

df = pd.read_csv("../example.csv", parse_dates=['DateTime']) 

Или к первому столбцу:

df = pd.read_csv("../example.csv", parse_dates=[0]) 

В вашем решенииэто date столбец, поэтому нужно Series.dt.date с sum:

b = a.groupby(a['date'].dt.date)['Burned'].sum().reset_index(name='Total')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...