Python 基于下一行查找上一行值

Python 基于下一行查找上一行值,python,pandas,jupyter-notebook,multiple-columns,Python,Pandas,Jupyter Notebook,Multiple Columns,我只是好奇,如果我们知道下一行的值,也就是行的累加和,如何找到前几行的值。例如,这里新的死亡人数加上总死亡人数,这只是新死亡人数的累加总和。如何在数据集中找到现在缺少的值?我们可以通过减法找到答案,但有什么程序化的方法吗 date total_cases new_cases total_deaths new_deaths population lockdown_date 2020-29-04 1012583.0 24132.0 58355

我只是好奇,如果我们知道下一行的值,也就是行的累加和,如何找到前几行的值。例如,这里新的死亡人数加上总死亡人数,这只是新死亡人数的累加总和。如何在数据集中找到现在缺少的值?我们可以通过减法找到答案,但有什么程序化的方法吗

date        total_cases   new_cases    total_deaths   new_deaths    population  lockdown_date
2020-29-04  1012583.0   24132.0         58355.0           2110.0    54225.446       2020-03-13
2020-04-30  1039909.0   27326.0         60966.0           2611.0    54225.446       2020-03-13
2020-05-01  1069826.0   29917.0         NaN                  NaN    54225.446       2020-03-13
2020-05-02  1103781.0   33955.0         65068.0           2062.0    54225.446       2020-03-13
2020-05-03  1133069.0   29288.0         66385.0           1317.0    54225.446       2020-03-13

您可以使用
shift
结合
fillna
重新对齐减去的列,以填充缺失的累积值,然后使用
diff
检索新案例:

从io导入StringIO
作为pd进口熊猫
txt=”“”
日期总例新例总死亡人数新死亡人数锁定日期
2020-29-04  1012583.0   24132.0         58355.0           2110.0    54225.446       2020-03-13
2020-04-30  1039909.0   27326.0         60966.0           2611.0    54225.446       2020-03-13
2020-05-01 1069826.0 29917.0南南54225.446 2020-03-13
2020-05-02  1103781.0   33955.0         65068.0           2062.0    54225.446       2020-03-13
2020-05-03  1133069.0   29288.0         66385.0           1317.0    54225.446       2020-03-13
"""
df=pd.read_csv(StringIO(txt),sep=“\s+”)
df_filled=df.assign(
死亡总数=λf:f[“死亡总数”]。fillna(
f[“总死亡人数”].sub(f[“新死亡人数”).shift(-1)
),
新死亡人数=λf:f[“新死亡人数”].fillna(f[“总死亡人数”].diff()),
)
打印(df_填充)
这对你有帮助吗?或者你也可以试试
         date  total_cases  new_cases  total_deaths  new_deaths  population  \
0  2020-29-04    1012583.0    24132.0       58355.0      2110.0   54225.446   
1  2020-04-30    1039909.0    27326.0       60966.0      2611.0   54225.446   
2  2020-05-01    1069826.0    29917.0       63006.0      2040.0   54225.446   
3  2020-05-02    1103781.0    33955.0       65068.0      2062.0   54225.446   
4  2020-05-03    1133069.0    29288.0       66385.0      1317.0   54225.446   

  lockdown_date  
0    2020-03-13  
1    2020-03-13  
2    2020-03-13  
3    2020-03-13  
4    2020-03-13