我正在尝试顺序计算两个相关数据帧的值。 base_dep_common
的值取决于多个序列,例如mapping_earliest_to_value
,base_dep_amounts
,initialized_ppe
和另一个数据帧cum_base_dep_common
,而这些数据帧又是{ base_dep_common
个数据框。
逻辑是base_dep_common
(可以称为折旧)应该等于base_dep_amounts
,除非资产已完全折旧;它应该为零,或仅包括最后要折旧的金额。整个逻辑可以在if,else语句中清楚地看到,但是我无法使其正常工作,并且输出与if,else条件中的期望不符。任何有关如何使其工作的建议将不胜感激。
系列值:
代码:
base_dep_common = pd.DataFrame(0, index = PPE_Consituents_string_list, columns = Historical_Dates+proforma_dates)
cum_base_dep_common = pd.DataFrame(0, index = PPE_Consituents_string_list, columns = Historical_Dates+proforma_dates)
x = 0
while x < len(base_dep_common.index):
y = 0
while y < len(base_dep_common.columns):
if base_dep_common.columns[y] == initialized_ppe[x]:
base_dep_common.iloc[x,y] = base_dep_amounts[x]
cum_base_dep_common.iloc[x,y] = base_dep_amounts[x]
if base_dep_common.columns[y] > initialized_ppe[x]:
if mapping_earliest_to_value[x]-cum_base_dep_common.iloc[x,y-1]>=base_dep_amounts[x]:
base_dep_common.iloc[x,y] = base_dep_amounts[x]
cum_base_dep_common = base_dep_common.cumsum(axis=1)
if mapping_earliest_to_value[x]-cum_base_dep_common.iloc[x,y-1]>=0 and mapping_earliest_to_value[x]-cum_base_dep_common.iloc[x,y-1]<base_dep_amounts[x]:
base_dep_common.iloc[x,y] = mapping_earliest_to_value[x]-cum_base_dep_common.iloc[x,y-1]
cum_base_dep_common = base_dep_common.cumsum(axis=1)
else:
base_dep_common.iloc[x,y] = 0
cum_base_dep_common = base_dep_common.cumsum(axis=1)
ipdb.set_trace()
y +=1
x +=1
display(base_dep_common)
display(cum_base_dep_common)
代码输出:
所需的输出: