【发布时间】:2020-05-19 13:23:17
【问题描述】:
我有两个数据框:df_a 包含两方 id_a 和 id_b 之间感兴趣的交易日期,交易 id 为 tx_id,df_b 包含两方之间的所有交易及其 tx_id。我想在 df_a 中再添加两列,它们记录了双方(id_a 和 id_b)在感兴趣日期之前的交易日期。
df_a 可以包含同一方之间的许多交易,并且在每种情况下都需要添加上一个交易日期。
> df_a
id_a id_b tx_id date_of_interest
2222 3189 1138312.0 2020-04-01 18:55:36.629318
2222 3325 1138371.0 2020-04-01 19:15:33.341302
> df_b
id_a id_b tx_id date_all
2222 3189 1045728 2020-02-13 00:18:18.840492
2222 3189 1138312 2020-04-01 18:55:36.629318
2222 3325 1052235 2020-02-17 19:56:07.809550
2222 3325 1138371 2020-04-01 19:15:33.341302
预期输出
> df_a
id_a id_b tx_id date prev_date. prev_tx_id
2222 3189 1138312.0 2020-04-01 18:55:36.629318 2020-02-13 00:18:18.840492 1045728
2222 3325 1138371.0 2020-04-01 19:15:33.341302 2020-02-17 19:56:07.809550 1052235
我试图使用 groupby,然后迭代每个日期,但什么也没找到。
g = df_a.groupby(['id_a', 'id_b'])
prev_date = []
for name, group in g:
# iterate through each date in g,
# prev_date_val = find the highest - 1 date in df_b dates for same id_a, id_b combinations
# prev_date.append(prev_date_val)
【问题讨论】:
-
df_a.groupby 函数会修改数据帧,这意味着当您调用它时不会返回数据帧。相反,它会更改您示例中的实际 df_a。