python - 根据 Python 中另一列的条目创建新列
问题描述
我是 Python 新手,希望你们能帮助我解决以下问题:
我有一个数据框,其中包含某种产品的每日需求。但是,需求显示为随时间累积。我想创建一个显示实际每日需求的列(见下表)。
当前数据框:
天# | 累计需求 |
---|---|
1 | 10 |
2 | 15 |
3 | 38 |
4 | 44 |
5 | 53 |
我想要达到的目标:
天# | 累计需求 | 每日需求 |
---|---|---|
1 | 10 | 10 |
2 | 15 | 5 |
3 | 38 | 23 |
4 | 44 | 6 |
5 | 53 | 9 |
谢谢!
解决方案
假设您在上面共享的内容代表您的实际数据,这意味着您每天有 1 行,并且 Day 列按升序排序。
您可以使用shift()
(请阅读它的作用),并在累积需求和累积需求的移位版本之间执行减法。这将为您提供实际的每日需求。
为确保其正常工作,请使用 . 检查每日需求的累计总和(新列)是否与累计总和相加cumsum()
。
import pandas as pd
# Calculate your Daily Demand column
df['Daily Demand'] = (df['Cumulative Demand'] - df['Cumulative Demand'].shift()).fillna(df['Cumulative Demand'][0])
# Check whether the cumulative sum of daily demands sum up to the Cumulative Demand
>>> all(df['Daily Demand'].cumsum() == df['Cumulative Demand'])
True
将打印回来:
Day Cumulative Demand Daily Demand
0 1 10 10.0
1 2 15 5.0
2 3 38 23.0
3 4 44 6.0
4 5 53 9.0
推荐阅读
- swift - 以编程方式满足两个自动布局约束 - Swift
- javascript - 如何动态地从数组中删除元素?反应.js
- html-email - OCTOBERCMS 使用 html_email 混淆电子邮件地址
- entity-framework - Entity Framework Core DbSet 没有从数据库返回任何数据
- logstash - LOGSTASH - 过滤 JSON
- java - 验证 Firebase android 登录系统
- debugging - LiveKD 在 Windows 10 下不再工作?
- javascript - 递归 Observable 调用不返回数据
- macos - dotnet list-sdks 未列出已安装的 SDK
- docker - 具有 hostNetwork True 的 Kubernetes Pod 无法访问同一集群中服务的外部 IP