【问题标题】:Calculating Non-Cumulative into a new column from cumulative values (Python)从累积值计算非累积到新列(Python)
【发布时间】:2020-07-18 20:39:27
【问题描述】:

我的目标是在下面转换 - 当前数据输出

通过添加一个名为 Cases 的新列,该列对于进一步分析是非累积的。

我已经尝试过这个解决方案,但我不确定我的错误是什么 -

Data["Cases"] = Data.groupby(level=0).diff().fillna(Data).reset_index()

请指教

【问题讨论】:

  • @EdChum 回答了一个类似的问题,但我无法适应 - stackoverflow.com/questions/36452024/…
  • 现在也在尝试 Data['Cases'] = Data.groupby(level=0).diff().fillna('Cumulative_Cases').reset_index()

标签: python python-3.x pandas pandas-groupby


【解决方案1】:

一种简单的方法是获取累积列中值的滞后,然后计算累积和滞后之间的差异。

import pandas as pd

date = ['2020-03-01','2020-03-02','2020-03-03','2020-03-04','2020-03-05'] 
cases = [1, 2, 4, 7, 10]
data = list(zip(date, cases))

df = pd.DataFrame(data, columns=['Date','Cases'])
df['Lag'] = df.Cases.shift(1).fillna(0)
df['Daily Cases'] = df.Cases - df.Lag

print(df)
         Date  Cases  Lag  Daily Cases
0  2020-03-01      1  0.0          1.0
1  2020-03-02      2  1.0          1.0
2  2020-03-03      4  2.0          2.0
3  2020-03-04      7  4.0          3.0
4  2020-03-05     10  7.0          3.0

请记住,这里的顺序很重要。因此,按升序对您的累积列进行排序。

如果对您有帮助,请不要忘记将其标记为已接受的答案

【讨论】:

    猜你喜欢
    • 2019-06-06
    • 2020-12-17
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多