python - 循环以一个条件计算两个数据帧之间的值
问题描述
我是 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 |
我希望我能解释我试图做什么,有人可以给我一个提示如何解决这个问题。非常感谢!
解决方案
您可以合并数据框,然后计算比率:
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
推荐阅读
- rx-java - 使用 RxJava2 下载带有进程的文件
- jquery - JOIN 查询 ruby on rails
- genetic-algorithm - 目标/适应度函数确定的遗传编程
- javascript - 从多个类导出的 js 中的 react-loadable 导入
- ruby-on-rails - Rails 5 order(:name) 有很多关联
- c# - 弹出绑定问题中的切换按钮
- java - 调用方法时出错 - 尝试部署 Javafx 应用程序时无法启动 JVM
- asp.net - 为什么解决方案资源管理器中我的 ASP.NET 文件旁边有一个红色标记?
- teradata - 填充同一列中其他数据的值 (Teradata)
- graph - AAD 德国:没有可用于应用注册的共享 MS Graph 权限?