首页 > 解决方案 > 根据 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

谢谢!

标签: pythondataframe

解决方案


假设您在上面共享的内容代表您的实际数据,这意味着您每天有 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

推荐阅读