首页 > 解决方案 > 如何根据规则提取唯一行?

问题描述

我有一个这样的数据框

id_1,date_1,id_2,date_2

我需要数据框 where rows (date_1 + 15 days) < date_2 如果这个规则匹配我只需要第一次出现

仅使用布尔掩码并不能解决问题

所以我想我可能需要使用某种for index, row in df.iterrows(): 并创建新的数据框

标签: pythonpandas

解决方案


import pandas as pd
from datetime import timedelta

df = pd.DataFrame(data={'id_1':[1,2,3,4], 
                        'date1': ['2018-01-10', '2018-02-05', '2018-02-20', '2018-02-21'],
                        'date2': ['2018-01-11', '2018-02-15', '2018-02-27', '2018-02-22']})


df[['date1', 'date2']] = df[['date1', 'date2']].apply(pd.to_datetime)


df['date1_15'] = df['date1'] + timedelta(15)
df = df.loc[df['date1_15'] < df['date2']].head(1)

推荐阅读