首页 > 解决方案 > 循环以一个条件计算两个数据帧之间的值

问题描述

我是 python 新手,从一个小型私人项目开始,真的希望有人可以帮助我解决以下问题:

我能够对不同的财务报表进行网络浏览,并将信息解析为三个不同的数据框(资产负债表、损益表和现金流数据)。我尝试根据特定年份的股票市场符号 (STMS) 计算两个数据帧中不同值之间的比率,例如对于 XYZ,收入与第 1 年和第 2 年之间的平均资产价值的比率(例如收入 Y1/((资产 Y1+资产 Y2) /2))。对于每个 stms,应计算比率。困难在于 STMS 会根据我要抓取的财务报表而改变。我想自动化比率计算,这样我就不能只循环一个固定的 STMS 名称,而是需要一个基于两个数据帧中的 stms 列的灵活循环。是否有机会根据 stms 列中的 stms 进行迭代。

Dataframe 1
|      Breakdown1     |     Year 1    | Year 2    |   STMS       |
|---------------------|---------------|-----------|--------------|
|          Assets|    |         122   |      125  |     XYZ      |
|          Assets     |         110   |      115  |     XXY      |
Dataframe 2
|      Breakdown2     |     Year 1    |    Year 2    |     STMS     |
|---------------------|---------------|--------------|--------------|
|          Income     |         10    |      12      |     XYZ      |
|          Income     |         9     |     10       |     XXY      |

我希望我能解释我试图做什么,有人可以给我一个提示如何解决这个问题。非常感谢!

标签: pythonpandasdataframeloops

解决方案


您可以合并数据框,然后计算比率:

merged_df = pd.merge(df1, df2, on="STMS", how="outer")

merged_df["ratio"] = merged_df["Year 1_y"] / (
    (merged_df["Year 1_x"] + merged_df["Year 2_x"]) / 2
)
print(merged_df)

印刷:

  Breakdown1  Year 1_x  Year 2_x STMS Breakdown2  Year 1_y  Year 2_y     ratio
0     Assets       122       125  XYZ     Income        10        12  0.080972
1     Assets       110       115  XXY     Income         9        10  0.080000

推荐阅读