删除多列上的重复项

时间:2021-04-30 10:09:51

标签: python pandas dataframe

我想根据日期删除数据框中的重复项,保留最新日期并确保返回的行也考虑到 Country 中的每个值。用示例 df 来说明:

示例 df

State   Country   Date          X1     X2     X3
A       AA        2021-01-01    8.0    5.0    0.0 
A       AA        2021-01-01    0.0    1.0    0.0
B       BB        2021-01-01    0.0    10.0   0.0 
X       XX        2021-01-01    0.0    0.0    0.0 

       

我的代码

df1 = df.drop_duplicates(subset=['Date'], keep = 'last')
df1

这给了我只返回最后一行 Country(XX) 的输出。虽然这是正确的,但我也希望代码考虑到 Country 列,并为我提供每个国家/地区的最新日期(即第 2 行到第 4 行)。输出还应将 'State' 列设为全为 '0' 值。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

使用 groupbyapply

def fetch_latest_data(df):
    return df.drop_duplicates(subset=['Date'], keep = 'last')
df  = df.groupby('Country').apply(fetch_latest_data).reset_index(drop=True)

更好的选择是使用 tail -

df = df.groupby(['Country','Date']).tail(1)
相关问题