我有两个数据框
逻辑:从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熊猫的新手。请指导
答案 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