从时间戳在指定范围或持续时间内的 pandas DataFrame 中删除重复行

2024-01-28

我有一个像这样的数据框:

Subject Verb    Object  Date
---------------------------------
Bill    Ate     Food    7/11/2015
Steve   Painted House   8/12/2011
Bill    Ate     Food    7/13/2015
Steve   Painted House   8/25/2011

我想删除所有重复项,其中重复项定义为具有相同的主语、动词、宾语和落在 X 天范围内(在我的示例中:5 天)。

Subject Verb    Object  Date
---------------------------------
Bill    Ate     Food    7/11/2015
Steve   Painted House   8/12/2011
Steve   Painted House   8/25/2011

“Steve - Painted - House”的两个实例都不会被删除,因为它们超出了 5 天的窗口范围。

我知道我可以使用一些数据结构和 DataFrame 的 iterrows 方法来做到这一点,但是有没有办法使用 Pandas drop_duplicates 来做到这一点?


Use duplicated + diff和这个结合groupby找出要删除的行。

c = ['Subject', 'Verb', 'Object']

def f(x):
    return x[c].duplicated() & x.Date.diff().dt.days.lt(5)

df = df.sort_values(c)
df[~df.groupby(c).apply(f).values]

  Subject     Verb Object       Date
0    Bill      Ate   Food 2015-07-11
1   Steve  Painted  House 2011-08-12
3   Steve  Painted  House 2011-08-25
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从时间戳在指定范围或持续时间内的 pandas DataFrame 中删除重复行 的相关文章

随机推荐