从输入创建输出数据帧,如何在每个ID首次target == 1时如何过滤行,或者按顺序删除目标为1的每个id的连续出现,但是在target = 1之前将全0保留在target中。
输入
ID date target
a1 2019-11-01 0
a1 2019-12-01 0
a1 2020-01-01 1
a1 2020-02-01 1
a1 2020-03-01 0
a2 2019-11-01 0
a2 2019-12-01 1
a2 2020-03-01 0
a2 2020-04-01 1
输出
ID date target
a1 2019-11-01 0
a1 2019-12-01 0
a1 2020-01-01 1
a2 2019-11-01 0
a2 2019-12-01 1
from io import stringIO
data = StringIO("""
uid, date, target
a1, 2019-11-01, 0
a1, 2019-12-01, 0
a1, 2020-01-01, 1
a1, 2020-02-01, 1
a1, 2020-03-01, 0
a2, 2019-11-01, 0
a2, 2019-12-01, 1
a2, 2020-03-01, 0
a2, 2020-04-01, 1
"""
)
df = pd.read_csv(data).rename(columns=lambda x: x.strip())
def filter_in_group(df: pd.DataFrame):
ind = np.argmax(df.target)
return df.loc[:, ['date', 'target']].iloc[:ind+1]
df_filtered = (
df
.groupby('uid')
.apply(lambda x: filter_in_group(x))
.reset_index()
.drop('level_1', axis=1)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句