如何使用熊猫日期时间运算对某些值求和



标题不清楚。让我解释一下。

我有一个这样的数据帧:

Order Quantity            Date Accepted        Date Delivered
20                     01-05-2010            01-02-2011
10                     01-11-2010            01-03-2011
300                    01-12-2010            01-04-2011
5                      01-03-2011            01-03-2012
20                     01-04-2012            01-11-2013
10                     01-07-2013            01-12-2014

我想基本上创建另一列,其中包含每行的未交付项目总数。

预期产出:

Order Quantity            Date Accepted        Date Delivered      Pending Order
20                     01-05-2010            01-02-2011             20
10                     01-11-2010            01-03-2011             30
300                    01-12-2010            01-04-2011             330
5                      01-03-2011            01-03-2012             305
20                     01-04-2012            01-11-2013             20
10                     01-07-2013            01-12-2014             30

在这里,我获取了数据帧的一部分并尝试获得结果。

df = pd.DataFrame({'order': [20, 10, 300, 200], 
'Date_aceepted': ['01-05-2010', '01-11-2010', '01-12-2010', '01-12-2010'],
'Date_delever': ['01-02-2011', '01-03-2011', '01-04-2011', '01-12-2010']})
order Date_aceepted Date_delever
0     20    01-05-2010   01-02-2011
1     10    01-11-2010   01-03-2011
2    300    01-12-2010   01-04-2011
3    200    01-12-2010   01-12-2010

然后我将使用熊猫数据时间模块将Date_accepted和Date_deliver更改为日期时间

df['date1'] = pd.to_datetime(df['Date_aceepted'])
df['date2'] = pd.to_datetime(df['Date_delever'])

然后,我将创建一个新的数据框,其中Date_accepted和Date_delever不同。我假设你只需要在你的最终结果中。

dff = df[df['date1'] != df['date2']]

您可以看到接受和 delever 相同的最后一行现在在 dff 中删除了。

order Date_aceepted Date_delever      date1      date2
0     20    01-05-2010   01-02-2011 2010-01-05 2011-01-02
1     10    01-11-2010   01-03-2011 2010-01-11 2011-01-03
2    300    01-12-2010   01-04-2011 2010-01-12 2011-01-04

然后我确实使用了挂单的熊猫暨

dff['pending'] = dff['order'].cumsum()

它给了

order Date_aceepted Date_delever      date1      date2  pending
0     20    01-05-2010   01-02-2011 2010-01-05 2011-01-02       20
1     10    01-11-2010   01-03-2011 2010-01-11 2011-01-03       30
2    300    01-12-2010   01-04-2011 2010-01-12 2011-01-04      330

最终数据框有两个额外的列,如果您不希望出现在结果中,可以删除这些列。

最新更新