我有一个pandas.DataFrame,包含不同证券的信息。有“日期”、“证券id”、“国家”、“因子名称”和“因子值”列,其中“因子值”表示“因子值”是“债务”还是“权益”。我被要求计算每个国家在每个日期的每种证券的债务股本比率。我只能考虑使用嵌套循环来循环每个列的唯一值,但它似乎要花很长时间才能运行。有没有什么方法可以加速我的代码
dates = data["date"].unique()
securities = data["security_id"].unique()
countries = data["country"].unique()
for date in dates:
for sec in securities:
for country in countries:
ratio = get_DEratio(date, sec, country)
def get_DEratio(date, sec, country):
TE_lst = data[(data["date"] == date) & (data["security_id"] == sec)
& (data["country"] == country) & (data["factor"] == "TE")]["factor_value"].tolist()
TD_lst = data[(data["date"] == date) & (data["security_id"] == sec)
& (data["country"] == country) & (data["factor"] == "TD")]["factor_value"].tolist()
if not TD_lst or not TE_lst:
return 0
TD, TE = TD_lst[0], TE_lst[0]
if TD == 0 or TE == 0:
return 0
return TD / TE
假设源数据帧包含:
首先计算辅助数据帧:
结果是:
然后,要获得最终结果,请运行:
您将获得:
相关问题 更多 >
编程相关推荐