pandas - 如何使用熊猫日期时间操作对某些值求和
问题描述
标题不清楚。让我解释。
我有一个这样的数据框:
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
然后我将使用 pandas 数据时间模块将 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']]
您可以看到现在在 dff 中删除了接受和 delever 相同的最后一行。
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
然后我确实使用了挂单的pandas cumsum
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
最后的数据框有两个额外的列,如果您不想在结果中出现,可以删除它们。
推荐阅读
- javascript - 如何克隆一个包含没有值的表单的元素?
- deep-learning - 如何使用 MuJoCo 获取相机渲染状态?
- java - 请求范围 bean 不能在响应正文中使用 [Spring Boot]
- python - 如何使用 python 将代理设置/凭据传递给命令提示符,以便同一 python 代码中的后续命令可以访问互联网?
- python - 关于局部加权线性回归问题
- javascript - 隐藏固定的 Div,当页脚 Div 在滚动时出现在屏幕上时
- sql-server - 为什么在 SQL Server 中重命名表也会更新视图?
- javascript - 在可折叠侧边栏闪亮中添加滑块输入
- android - 如何修复华为或vivo手机上的“应用程序感染病毒”
- php - 如何在 laravel 5.7 中获取 json 值?