如何根据日期范围获取总计

时间:2020-03-11 11:38:28

标签: python pandas

我有两个数据框

逻辑:从2020年2月1日到接下来的3天添加数量

Part No    Date       Quantity         
   X     01.01.2020      52      
   Y     02.01.2020      ?
   Z     03.01.2020      ?

Date            Quantity
01.01.2020         10
02.01.2020         20
03.01.2020         15
04.01.2020         17
05.01.2020         19

我是python熊猫的新手。请指导

1 个答案:

答案 0 :(得分:1)

您需要将每个日期的数据切成3天,然后收集结果。

import pandas as pd
from io import StringIO
from dateutil.relativedelta import relativedelta

data = StringIO("""
date Quantity
01.01.2020 10
02.01.2020 20
03.01.2020 15
04.01.2020 17
05.01.2020 19
""")

# load raw data & convert to datetime
df = pd.read_csv(data, sep=' ', engine='python')
df['date'] = pd.to_datetime(df['date'], format='%d.%m.%Y')

# slice data by 3 days forward
data = {}
for index, row in df.iterrows():
    start_date = row['date']+ relativedelta(days=1)
    end_date = row['date'] + relativedelta(days=4)
    sum = df.loc[(df['date'] >= start_date) & (df['date'] < end_date)]['Quantity'].agg('sum')
    data.update({row['date'] : [sum]})

# collect data into new df
df_final = pd.DataFrame.from_dict(data, orient='index', columns=['Quantity'])

输出:

            Quantity
2020-01-01        52
2020-01-02        51
2020-01-03        36
2020-01-04        19
2020-01-05         0
相关问题