Для этой цели я создал простой csv, но вы можете легко применить его к вашему фрейму данных. Я использовал следующий фрейм данных:
Date value total
0 24-11-2019 10 NaN
1 24-11-2019 20 NaN
2 24-11-2019 50 NaN
3 26-11-2019 14 NaN
4 26-11-2019 23 NaN
5 02-12-2019 15 NaN
6 02-12-2019 15 NaN
Это решение, которое я придумал. Это может быть не самым оптимальным, так как я едва использовал pandas, но это работает. Это не l oop внутри al oop, что, как я думаю, делает ваш черновик, что лучше с точки зрения производительности.
import pandas as pd
df = pd.read_csv('test.csv')
compareVal = df.Date[0]
total=0
print(df)
for x, date in enumerate(df.Date):
if compareVal==date:
total += df.value[x]
else:
df.at[x-1,'total'] = total
total = df.value[x]
compareVal = df.Date[x]
if x == len(df)-1:
df.at[x,'total'] = total
print(df)
Это вывод:
Date value total
0 24-11-2019 10 NaN
1 24-11-2019 20 NaN
2 24-11-2019 50 80.0
3 26-11-2019 14 NaN
4 26-11-2019 23 37.0
5 02-12-2019 15 NaN
6 02-12-2019 15 30.0