我有一个跟踪银行账户信息的表。每个银行账户都可以添加一个人作为感兴趣的一方,并在任何时候(甚至在同一天)删除。这个人可以添加一次不删除,也可以添加和删除一次或多次(甚至一天几次)
的例子:
<表类>
日期
BankId
AccountID
类型
PersonId
tbody><<tr>2/9/2022 0001 0004 添加 0015 2/10/2022 0004 0005 添加 0038 3/2/2022 0001 0004 删除 0015 表类>
我假设数据是由Date
排序的。然后你可以这样做:
df["tmp"] = df["Type"].eq("Addition")
df["tmp"] = df.groupby(["BankId", "AccountID", "PersonId"])["tmp"].cumsum()
out = (
df.pivot(
index=["BankId", "AccountID", "PersonId", "tmp"], columns="Type", values="Date"
)
.reset_index()
.rename_axis(None, axis=1)
.drop(columns="tmp")
)
print(out)
打印:
BankId AccountID PersonId Addition Deletion
0 1 4 15 2/9/2022 3/2/2022
1 4 5 38 2/10/2022 NaN