【发布时间】:2023-01-25 03:29:44
【问题描述】:
我有两种产品。一个为 10 年,另一个为 15 年(10 年机构合规和 15 年机构合规)。当我使用 10 时,它工作正常,但每当我尝试对 15 进行计算时,它什么也没有给我。一个空框。两种产品的逻辑相同。为什么我的代码适用于一种产品而不适用于另一种产品? 这是我的代码和我正在阅读的用于获取和计算 final_df 的 excel 文件。
final_df 适用于 10 年的产品,但不适用于 15 年的产品,尽管有记录,但它返回一个空 df 作为最终输出。为什么?
链接到我正在阅读的 excel 文件 -> https://drive.google.com/drive/folders/11BlzOkQJ2Uj88j_QvLjGdISlzLOKowNg
import pandas as pd
from datetime import datetime
file_path = r'C:\Users\admin\Downloads\retail_pricing\test\Retail_Pricing - RSG.xlsx'
main_df = pd.read_excel(file_path, engine='openpyxl', sheet_name='Source')
list_of_products = main_df["LoanID"].unique().tolist()
print(list_of_products)
def group_loans():
group_df = main_df.groupby("LoanID")
individual_loanid_df = group_df.get_group('10 Year Agency Conforming')
final_df = final_range_output(individual_loanid_df,4,4)
print(final_df)
final_df.to_excel('final_output.xlsx', index=False)
def final_range_output(df,upper_row_no,lower_row_no):
# Finding par rate
df_60 = df[df['LockPeriod'] == 60]
df_60['Check'] = abs(1-df_60['MarketPrice']/100)
min_check = df_60['Check'].min()
min_row = df_60.loc[df_60['Check'] == min_check]
par_rate = float(min_row.NoteRate)
print(par_rate)
# Finding range
idx = df.index[df['NoteRate'] == par_rate].to_list()[0]
upper = (idx - (upper_row_no * 5))
lower = (idx + (lower_row_no * 5) + 5)
range_df = df.iloc[upper : lower]
# Rounding to nearest 1/8
range_df['MarketPrice_Round'] = range_df['MarketPrice'].apply(lambda a: ((round((a*8)+0.5,0) - 1) / 8))
# Final output
range_df['MarketPrice_Final'] = range_df['MarketPrice'].apply(lambda a: 100 - a)
return range_df
group_loans()
【问题讨论】:
-
individual_loanid_df = group_df.get_group('10 Year Agency Conforming')你这里没有常量吗? -
是的。当我使用这一行 individual_loanid_df = group_df.get_group('10 Year Agency Conforming') 并进行计算然后返回 df 以将其保存在 final_df 中时,它起作用了。但是,当我通过编写 individual_loanid_df = group_df.get_group('15 Year Agency Conforming') 将值更改为 15 然后进行计算时,它不会进行计算,因为它可以使用 10 年产品进行计算。你可以自己检查一下。只需将这一行的值从 10 更改为 15 并检查最终输出。你会明白我在说什么。 @ArtyomAkselrod
标签: python python-3.x pandas dataframe