我有一个包含付款数据的数据框。我想检查,如果付款日期早于2018年9月30日,并且如果余额等于费用金额,则将余额设置为0。如果付款=余额,则我尝试注销任何早于2018年9月30日的余额
如果余额和费用相等,下面的代码似乎使所有的东西都为零
def MandT(df):
if datetime.date(df['PaymentDate']) < datetime.date(2018, 9, 30):
return 0 if df['Balance'] == df['Charge Amount'] else df['Balance']
df['Balance1'] = df.apply(MandT, axis=1)
输入
Date Svc_From_Amount Charge_Balance1
8/1/2017 326.00 326.00
8/1/2017 82.00 100.00
8/1/2017 82.00 200.00
10/2/2018 -156.00 -156.00
12/1/2018 82.00 82.00
8/1/2017 82.00 -5.00
8/1/2017 82.00 8.00
预期产量
Date Svc_From_Amount Charge_Balance1
8/1/2017 326.00 0.00
8/1/2017 82.00 100.00
8/1/2017 82.00 200.00
10/2/2018 -156.00 -156.00
12/1/2018 82.00 0.00
8/1/2017 -5.00 0.00
8/1/2017 82.00 8.00
您可以使用
.loc
来设置值。我假设Balance1
是您要添加的新列试试看这样行不行。 您必须在下面的代码中适当地重命名所有位置的列(正如您在日期中所做的那样)
我认为问题可能出在
由于您没有提供有关数据帧的更多信息,我假设您的“付款日期”列包含字符串格式的日期。如果我是对的,您可以尝试用以下代码替换上面的代码:
此代码将日期转换为日期时间格式,以便进行比较
相关问题 更多 >
编程相关推荐