我想要一张这样的客户订单表:
static async Task<List<int>> MethodTest(int i)
{
await Task.Delay(10);
return new List<int>() { i, i, i };
}
async Task method()
{
Task<List<int>>[] tasks = new Task<List<int>>[4];
tasks[0] = MethodTest(0);
tasks[1] = MethodTest(1);
tasks[2] = MethodTest(2);
tasks[3] = MethodTest(3);
await Task.WhenAll(tasks);
Console.WriteLine(tasks[0].Result);
}
并创建一个按周计算运行总计的表。像这样:
customer_id | order_date | amount
0 | 2020-03-01 | 10.00
0 | 2020-03-02 | 2.00
1 | 2020-03-02 | 5.00
1 | 2020-03-02 | 1.00
2 | 2020-03-08 | 2.00
1 | 2020-03-09 | 1.00
0 | 2020-03-10 | 1.00
非常感谢您的帮助!
答案 0 :(得分:2)
IIUC:
df['order_date'] = pd.to_datetime(df['order_date'])
(df.groupby(['customer_id',df.order_date.dt.floor('7D')])
.amount.sum()
.unstack('customer_id',fill_value=0)
.cumsum()
)
输出:
customer_id 0 1 2
order_date
2020-02-27 12.0 6.0 0.0
2020-03-05 13.0 7.0 2.0
答案 1 :(得分:1)
@Quang Hoang美丽而简洁。但是您严格要7天还是一周要它?
我可以在一周内对其进行分区,因为希望的日期显示在您的结果中。显然@Quang Hoang的经验无与伦比。随时批评我,因为我正在学习
将日期强制为日期时间,并将日期设置为索引
df['order_date']=pd.to_datetime(df['order_date'])
df.set_index(df['order_date'], inplace=True)
df.drop(columns=['order_date'], inplace=True
同时按客户ID分组,然后按金额重新采样。
df.groupby('customer_id')['amount'].apply(lambda x:x.resample('W').sum()).unstack('customer_id',fill_value=0).cumsum()
结果