继我之前的问题之后(感谢那些回答的人),我再一次陷入困境,无法实现我怀疑使用groupby
英寸大Pandas 可能实现的目标.以下是我努力实现的目标.使用以下示例数据帧:
data_initial = {
"account_id": ['1001', '1001', '1001', '1002', '1002', '1002', '1002', '1002', '1002', '1002', '1002', '1002', '1002', '1003', '1003', '1003', '1003', '1003', '1003',],
"data_type": ['payment', 'payment', 'payment', 'payment', 'payment', 'plan', 'payment', 'plan', 'plan', 'payment', 'payment', 'payment', 'payment', 'payment', 'plan', 'payment', 'payment', 'payment', 'payment',],
"transaction_date": ['2022-04-01', '2022-04-12', '2022-05-02', '2022-02-02', '2022-03-01', '2022-03-15', '2022-04-01', '2022-04-01', '2022-04-13', '2022-04-26', '2022-05-01', '2022-05-04', '2022-05-10', '2022-03-10', '2022-03-25', '2022-04-05', '2022-04-16', '2022-04-24', '2022-05-05',],
"amount": ['-50', '-40', '-60', '-30', '-25', '250', '-50', '200', '200', '-25', '-25', '-25', '-25', '-20', '100', '-25', '-25', '-25', '-25',],}
我希望有效地将account_id
人分组,然后应用以下逻辑:
-
如果
data_type
是"付款",并且{account_id
没有data_type
="计划",或者记录的transaction_date
在任何data_type
="计划"记录之前,那么新的列classification
="收据"与计划无关" -
如果
data_type
是"付款",并且{account_id
有一个data_type
="计划",transaction_date
在任何data_type
="计划"记录之后,那么新的列classification
="接收计划" -
如果
data_type
表示"计划"是"计划"的唯一实例,则新列classification
="仅" -
如果
data_type
是"计划",并且是"计划"的第一个实例,则新列classification
="初始" -
如果
data_type
是"计划",并且不是"计划"的第一个实例,也不是最后一个实例,则新列classification
="过期" -
如果
data_type
是"计划",并且是"计划"的最后一个实例,则新列classification
="当前"
因此,示例数据帧的结果如下:
再次提前感谢所有能够提供帮助的人.非常感谢.