gpt4 book ai didi

python - 在 dplyr 中是否有类似的 pandas/numpy 函数与 group_by lead/lag with ifelse 语句?

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:28 25 4
gpt4 key购买 nike

我正在分析契约(Contract)以查看哪些契约(Contract)在 Python 中按时支付或未支付。这些是合约到期日 outstanding_balance == 0 的合约。

我使用的 pandas DataFrame 是:

example_data = {'contract_no': [1,1,2,2,3,3],
'maturity_date': ['2019-01-02', '2019-01-02', '2019-01-02', '2019-01-02', '2019-01-02', '2019-01-02'],
'date_report_created': ['2019-01-01', '2019-01-02', '2019-01-01', '2019-01-02', '2019-01-01', '2019-01-02'],
'outstanding_balance': [10, 0, 20, 20, 0, 0]}
example_data = pd.DataFrame(example_data, columns = ['contract_no',
'maturity_date',
'date_report_created',
'outstanding_balance'])

这是下面的数据框。如您所见,contract_no == 1,未结余额在 maturity_date == date_report_created 时(按时)支付。对于第二份契约(Contract),这是延迟支付的,对于第三份契约(Contract),这是提前支付的。

基本上,我正在寻找当 maturity_date == date_report_created 时 outstanding_balance == 0 的合约。

   contract_no maturity_date date_report_created  outstanding_balance
0 1 2019-01-02 2019-01-01 10
1 1 2019-01-02 2019-01-02 0
2 2 2019-01-02 2019-01-01 20
3 2 2019-01-02 2019-01-02 20
4 3 2019-01-02 2019-01-01 0
5 3 2019-01-02 2019-01-02 0

这就是我想要的输出:

   contract_no maturity_date date_report_created  outstanding_balance  paid_on_time
0 1 2019-01-02 2019-01-01 10 1
1 1 2019-01-02 2019-01-02 0 1
2 2 2019-01-02 2019-01-01 20 0
3 2 2019-01-02 2019-01-02 20 0
4 3 2019-01-02 2019-01-01 0 0
5 3 2019-01-02 2019-01-02 0 0

我已经尝试在 python 3 中使用 pandas/numpy 来实现这一点。如果有人知道如何实现这一点,我将非常感激,我知道它需要在 contract_no 和一些 ifelse( ) 在某处滞后/领先逻辑!

最佳答案

使用transform + idxmax

cno = example_data['contract_no']
ob = example_data['outstanding_balance']
md = example_data['maturity_date']
drc = example_data['date_report_created']

i = ob.eq(0).groupby(cno).transform('idxmax')
j = md.eq(drc).groupby(cno).transform('idxmax')

i.eq(j).view('i1')

0    1
1 1
2 0
3 0
4 0
5 0
dtype: int8

关于python - 在 dplyr 中是否有类似的 pandas/numpy 函数与 group_by lead/lag with ifelse 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com