1

我正在尝试根据子字符串条件获取组中的下一行。

下面的代码忽略了分组条件。


df_shifted_rows = df[df.groupby(['id'])\
                     ['url'].apply(lambda x: x.str.contains("confirmation"))\
                     .shift(1).fillna(False)]

如果当前组中的匹配值在最后一行,那么班次应该给我 null。但它正在移动到下一组并给出下一组中的第一个值。

4

2 回答 2

1

分成两步

m = df['url'].str.contains("confirmation")
df = df[m.groupby(df['id']).shift(1)]
于 2020-09-10T00:16:05.577 回答
0

通过调整现有代码。将班次带入应用

df_shifted_rows = df[df.groupby(['id'])\
                     ['url'].apply(lambda x: x.str.contains("confirmation")\
                     .shift(1).fillna(False))]
于 2020-09-10T00:58:10.410 回答