首页 > 解决方案 > 在 Python DataFrame 中查找列值降至零的行

问题描述

我有以下示例数据集,我需要在其中找到 overdue_amount 降至零而loan_balance 列每个loan_id 增加相同数量的行。例如,行 2-> 3, 7 -> 8, 11 -> 12

report_date  customer_id    loan_id   Overdue_Amount   Loan_Balance  Flag_1   

01/01/20                1    12        125000           0              0
02/01/20                1    12        125000           0              1
03/01/20                1    12         0               125000         1
04/01/20                1    13         0               125000         0
05/01/20                1    13         0               125000         0
01/01/20                2    111        0               0              0
02/01/20                2    111        6000            0              1
03/01/20                2    111        0               6000           1
04/01/20                2    112        0               6000           0
01/01/20                3    131       165878           0              0
02/01/20                3    131       165878           0              1     
03/01/20                3    131       0               165878          1
04/01/20                3    132       9000            10000           0
05/01/20                3    132       9000            10000           0
06/01/20                3    132       9000            10000           0
07/01/20                3    132       9000            10000           0

标签: pythonpython-3.xpandasdataframe

解决方案


您可以通过计算列的差异,然后选择一列差异等于另一列差异的负数的行来解决此Overdue_Amount问题Loan_Balance。然后提取行索引。

假设您的 DataFrame 被称为df

diff = df[['Overdue_Amount', 'Loan_Balance']].diff()
row_idx = diff.index[(diff['Overdue_Amount'] != 0) & (diff['Overdue_Amount'] == -diff['Loan_Balance'])].values
row_idx = np.sort(np.append(row_idx, row_idx + 1))

输出:

array([ 2,  3,  7,  8, 11, 12], dtype=int64)

推荐阅读