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