Python迭代依赖的数据帧和错误的输出

时间:2018-07-07 23:48:14

标签: python pandas loops dataframe

我正在尝试顺序计算两个相关数据帧的值。 base_dep_common的值取决于多个序列,例如mapping_earliest_to_valuebase_dep_amountsinitialized_ppe和另一个数据帧cum_base_dep_common,而这些数据帧又是{ base_dep_common个数据框。

逻辑是base_dep_common(可以称为折旧)应该等于base_dep_amounts,除非资产已完全折旧;它应该为零,或仅包括最后要折旧的金额。整个逻辑可以在if,else语句中清楚地看到,但是我无法使其正常工作,并且输出与if,else条件中的期望不符。任何有关如何使其工作的建议将不胜感激。

系列值:

enter image description here

代码:

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)

代码输出:

enter image description here

所需的输出:

enter image description here

0 个答案:

没有答案