【问题标题】:Loop to calculate values between two data frames, with one condition循环以一个条件计算两个数据帧之间的值
【发布时间】:2021-04-21 17:33:43
【问题描述】:

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

我能够通过网络浏览不同的财务报表并将信息解析为三个不同的数据框(资产负债表、损益表和现金流数据)。我尝试根据特定年份的股票市场符号 (STMS) 来计算两个数据框中不同值之间的比率,例如对于 XYZ,第一年和第二年之间的收入与平均资产价值的比率(例如收入 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      |

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

【问题讨论】:

  • 您是否尝试为每个 STMS 单独计算此比率?而你面临的挑战是你不知道你会提前遇到什么 STMS?
  • 嗨,JCH,是的,这正是我的挑战

标签: python pandas dataframe loops


【解决方案1】:

您可以合并数据框,然后计算配给:

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

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2019-11-28
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多