首页 > 解决方案 > Python - 如果给定日期差异(天)中不存在值,则删除 ID 行

问题描述

提供了 ID、Indicator 和 Datediff 行,我如何根据 Datediff 行删除没有 28 天或更早的 Y 指标的任何 ID?感谢您的帮助-谢谢!

df = pd.DataFrame({'ID':[111, 111, 111, 112, 112, 112, 113, 114, 114, 115,
                                                                 115],
                   'Indicator':['N', 'Y', 'N', 'N', 'N', 'Y', 'Y', 'Y',
                                                         'N', 'Y', 'N'],
                   'Dateddiff': [0, 10, 34, 0, 0, 28, 29, 0, 28, 30, 34]})

输入

ID   Indicator Datediff
111  N         0
111  Y         10
111  N         34
112  N         0
112  N         0
112  Y         28
113  Y         29  
114  Y         0
114  N         28
115  Y         30
115  N         34

输出

ID   Indicator Datediff
111  N         0
111  Y         10
111  N         34
112  N         0
112  N         0
112  Y         28 
114  Y         0
114  N         28

标签: pythonpandasjupyter-notebook

解决方案


尝试这个

df_final = df[~(df.Indicator.eq('Y') 
                & df.Dateddiff.gt(28)).groupby(df.ID).transform('any')]

Out[37]:
    ID Indicator  Dateddiff
0  111         N          0
1  111         Y         10
2  111         N         34
3  112         N          0
4  112         N          0
5  112         Y         28
7  114         Y          0
8  114         N         28

推荐阅读