Как я могу суммировать все цены из таблицы виджетов в python с точки зрения даты столбца? - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблема с тем, чтобы сделать код для суммирования цен в столбце даты.

Например:

Photo of the tablewidget

31-12-2019

Там у нас есть:

39,0 и 62,0

Я хочу подвести итог и получить 101,0 в другом столбце или под последней датой в новой строке

Все данные в табличном виджете, которые у меня есть, благодарны за процедуру чтения spreedsheet Excel:

df = pd.read_excel('test_cod.xlsx')
self.tableWidget_25.setRowCount(len(df.index))
for i in range(len(df.index)):
    for j in range (len(df.columns)):

self.tableWidget_25.setItem(i,j,QTableWidgetItem(str(df.iat[i,j])))

test_cos.xlsx здесь: spreedsheet

1 Ответ

0 голосов
/ 11 февраля 2020

Для этой цели я создал простой 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
...