【问题标题】:how to update rows based on previous row of dataframe python如何根据数据框python的前一行更新行
【发布时间】:2021-04-02 12:28:06
【问题描述】:

我有一个时间序列数据如下:

date    product price   amount
11/01/2019  A   10  20
11/02/2019  A   10  20
11/03/2019  A   25  15
11/04/2019  C   40  50
11/05/2019  C   50  60

我有一个高维数据,我刚刚添加了两列 {price, amount} 的简化版本。我正在尝试根据如下所示的时间索引对其进行相对转换:

date    product price   amount
    11/01/2019  A   NaN NaN
    11/02/2019  A   0   0
    11/03/2019  A   15  -5
    11/04/2019  C   NaN NaN
    11/05/2019  C   10  10

我正在尝试根据时间索引获取每种产品的相对变化。如果指定产品不存在之前的日期,我将添加“NaN”。

你能告诉我有什么功能可以做到这一点吗?

【问题讨论】:

    标签: python-3.x pandas time-series


    【解决方案1】:

    product 分组并使用.diff()

    df[["price", "amount"]] = df.groupby("product")[["price", "amount"]].diff()
    

    输出:

            date product  price  amount
    0 2019-11-01       A    NaN     NaN
    1 2019-11-02       A    0.0     0.0
    2 2019-11-03       A   15.0    -5.0
    3 2019-11-04       C    NaN     NaN
    4 2019-11-05       C   10.0    10.0
    

    【讨论】:

    • 有什么方法可以插入没有命名的列,例如 [["price", "amount"]]?我有一个高维数据,我正在尝试注入除 {"date", "product"} 之外的列。
    • 当然,使用 cols = ["price", "amount"] 之类的东西,如果你想要其他 cols,那么 others = [c for c in df.columns if c not in ("price", "amount")]
    • 然后你可以选择所有othersdf[others]
    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 2019-07-22
    • 2021-11-12
    • 2022-01-25
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多