【发布时间】:2022-01-21 08:43:03
【问题描述】:
我有一个遵循这种结构的数据框:
id created_at seen_before
0 1043 2021-11-27 16:56:43 0
1 1027 2021-11-22 19:01:21 0
2 1099 2021-11-22 07:37:02 0
3 1099 2021-11-22 07:36:50 0
4 1099 2021-11-22 07:36:41 0
5 1027 2021-11-22 07:36:39 0
我想查看每一行,并检查是否存在具有较早时间戳的匹配 id,并在 seen_before 列中用 1 指示它,以便更新数据框像这样:
id created_at seen_before
0 1043 2021-11-27 16:56:43 0
1 1027 2021-11-22 19:01:21 1
2 1099 2021-11-22 07:37:02 1
3 1099 2021-11-22 07:36:50 1
4 1099 2021-11-22 07:36:41 0
5 1027 2021-11-22 07:36:39 0
我已经制定了一个迭代每一行的解决方案,并将该行与数据帧的其余部分进行比较:
for _, row in df.iterrows():
df.loc[(df['created_at'] > row['created_at']) & (df['id'] == row['id']), 'seen_before'] = 1
这行得通,但它似乎不是很有可扩展性,因为我正在处理大量数据,并且希望避免遍历每一行。
如果 pandas 中存在更具可扩展性的方法,我想知道。
【问题讨论】: