Python 创建一个比较两行的新列

Python 创建一个比较两行的新列,python,pandas,Python,Pandas,我正在研究一个新冠病毒-19数据集,其中包括自3月份以来每个城市每个月最后一天的总病例和总死亡人数。但我想创建一个专栏,告诉我每个城市在这几个月的新病例数量 我的逻辑是:如果位置p的'city\u ibge\u code'列中的单元格值与位置p-1中的值相同,则应创建一个新列,该列为两个月内病例数之间的差值。如果值不同(这表明它们是不同的城市),只需将该值传递到新列 casos_full:是包含3月、4月、5月、6月、7月、8月和11月的城市以及病例和死亡人数的数据框架。 city\u ibge

我正在研究一个新冠病毒-19数据集,其中包括自3月份以来每个城市每个月最后一天的总病例和总死亡人数。但我想创建一个专栏,告诉我每个城市在这几个月的新病例数量

我的逻辑是:如果位置p的
'city\u ibge\u code'
列中的单元格值与位置p-1中的值相同,则应创建一个新列,该列为两个月内病例数之间的差值。如果值不同(这表明它们是不同的城市),只需将该值传递到新列

casos_full
:是包含3月、4月、5月、6月、7月、8月和11月的城市以及病例和死亡人数的数据框架。
city\u ibge\u code
:是数据框中每个城市的代码-每个城市都有一个唯一的代码

还有一个“
date
”列,它表示一个月的最后一天

for rows in casos_full:
    if rows['city_ibge_code'] ==  rows['city_ibge_code'].shift(1):
        rows['New Cases'] = rows['last_available_confirmed'] - rows['last_available_confirmed'].shift(1)
    else:
        rows['New Cases'] = rows['last_available_confirmed']

这是该行的视图。您需要更新实际的数据帧。如果我正确理解你的问题

for i, rows in enumerate(casos_full):
    if rows['city_ibge_code'] ==  rows['city_ibge_code'].shift(1):
        casos_full[i]['New Cases'] = rows['last_available_confirmed'] - rows['last_available_confirmed'].shift(1)
    else:
        casos_full[i]['New Cases'] = rows['last_available_confirmed']

请对您的问题给予更精确的解释,以便我们能够提供帮助。

为什么不直接用groupby来计算差异
casos\u full.groupby('city\u ibge\u code')['last\u available\u confirm'].diff()
然后fillna?@It\u Chris在尝试for循环之前,我有类似的想法。不管怎样,这很有效,谢谢!只需要找到一种方法,使用fillna()为每个城市提供正确数量的操作系统案例。
casos\u full.groupby('city\u ibge\u code')['last\u available\u confirmed'].diff().fillna(casos\u full['last\u available\u confirmed'])