【问题标题】:How do I get the sum of columns from a csv within specified rows using dates inputting as variables in python?如何使用在python中作为变量输入的日期从指定行中的csv中获取列的总和?
【发布时间】:2020-07-15 18:25:01
【问题描述】:
日期、小时、计数、状态 2018-01-02,4,15,SFZ 2018-01-03,5,16,ACZ 2018-01-04,3,14,SFZ 2018-01-05,5,15,SFZ 2018-01-06,5,18,ACZ

这是我一直在处理的数据的一部分。实际数据的格式相同,其中每个日期大约有 1000 个条目。我将 start_date 和 end_date 作为用户的输入:

start_date=dt.date(2018, 1, 2)
end_date=dt.date(2018, 1, 23)

现在,我必须在输出中显示所选日期范围内的总小时数和计数。我可以通过使用这个 sn-p 直接在 between 子句中输入日期来做到这一点:

df = df.loc[df['Date'].between('2018-01-02','2018-01-06'), ['hrs','Count']].sum()
print (df)

输出:

22 小时 计数 78 数据类型:int64

我正在使用熊猫和日期时间库。但是,我想使用变量 start_date 和 end_date 传递它们,因为它们可能每次都会改变。我尝试替换它,它不会给我一个错误,但总数显示为 0。

df = df.loc[df['Date'].between('start_date','end_date'), ['hrs','Count']].sum()
print (df)

输出:

Duration_hrs 0 拒绝计数 0 数据类型:int64

【问题讨论】:

    标签: python python-3.x pandas numpy datetime


    【解决方案1】:

    您只需要将所有值转换为兼容类型,pd.Timestamp

    df = df.loc[pd.to_datetime(df['Date']).between(pd.Timestamp(start_date),
                                                   pd.Timestamp(end_date)),
                ['hrs','Count']].sum()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 2020-08-23
      • 2012-12-16
      • 2013-03-12
      • 1970-01-01
      • 2021-10-08
      • 2017-10-19
      • 2017-07-08
      相关资源
      最近更新 更多