【问题标题】:substracting two rows in one column based on other columns values in python dataframe根据python数据框中的其他列值减去一列中的两行
【发布时间】:2025-05-17 08:10:02
【问题描述】:

我是 python 新手,我正在尝试使用 covid 数据集。下面显示了我的 COVID DF 的尾部。

我需要一个新列 (covid ['Daily_Confirmed']) 减去每行中的“已确认”列,因为此功能显示汇总数据。

如果“地区”、“人口”和“日期”列相同,则应扣除已确认列中的两行。

这样,我们将在同一个 DF 中为每个区域提供每日确诊病例数。

region Population date Confirmed
10889 Tipperary 159553 2021-04-22 5719
10890 Waterford 116176 2021-04-22 5542
10891 Westmeath 116176 2021-04-10 3780
for i in range (1 ,len(covid)):
        if (covid['region'][i] == covid['region'][i-1]) and (covid['Population'][i] == covid['Population'][i-1]) and (covid['Population'][i] == covid['date'][i] == covid['date'][i-1]:
            covid ['Daily_Confirmed'] = covid['Confirmed'].loc[i] - covid['Confirmed'].loc[i-1]
covid.head()

【问题讨论】:

  • df.sort_values('date', ascending=False).groupby(['region', 'Population'])['Confirmed'].diff() ?
  • @ScottBoston,您好,非常感谢。我面临一个问题,即扣除的数字显示在错误的行中。我的意思是如果 2021 年 5 月 3 日的确诊病例是 100 例,前一天是 95 例,那么现在扣除的数字应该是 5 并显示在与 05/03/2021 相关的行中,而不是 04/03/2021 行。
  • 我相信只要从@Scott Boston 的回答中颠倒排序顺序就可以解决这个问题:df.sort_values('date').groupby(['region', 'Population'])['Confirmed'].diff()
  • @ShubhamPeriwal 非常感谢

标签: python pandas dataframe


【解决方案1】:

对@Scott Boston 的回答稍作修改

df.sort_values('date').groupby(['region', 'Population'])['Confirmed'].diff()

【讨论】:

    最近更新 更多