【问题标题】:How can I sum up of all prices from tablewidget in python in terms of date column?如何根据日期列总结python中tablewidget的所有价格?
【发布时间】:2020-02-11 07:33:07
【问题描述】:

我在编写代码以根据日期列总结价格时遇到问题。

例如:

2019 年 31 月 12 日

我们有:

39,0 和 62.0

我想总结一下,在其他列或新行的最后一个日期下得到 101.0

tablewidget 中的所有数据感谢 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

【问题讨论】:

  • 分享 test_cod.xlsx
  • 好的,我附上文件

标签: python python-3.x pyqt5 qtablewidget qtablewidgetitem


【解决方案1】:

我为此目的创建了一个简单的 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,但它确实有效。它不会在我认为您的草稿正在执行的循环中循环,这在性能方面更好。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    相关资源
    最近更新 更多