基于多列条件计算累积和的 Pandas 教程

霞舞
发布: 2025-09-22 20:35:18
原创
496人浏览过

基于多列条件计算累积和的 pandas 教程

本教程详细介绍了如何使用 Pandas 高效地根据相邻两列的条件(如“买入”和“卖出”信号)计算某一列的累积和。通过巧妙利用 combine_first()、ffill() 和布尔索引等 Pandas 核心功能,我们能够避免传统循环,实现基于状态变化的条件性累积求和,从而提高数据处理的效率和代码的简洁性。

1. 问题背景与挑战

在数据分析中,我们经常需要对某一列数据进行累积求和(cumulative sum)。然而,有时这种累积求和并非针对所有行,而是需要根据其他列的特定条件来触发、延续或中断。例如,在一个交易数据集中,我们可能希望在遇到“买入”或“卖出”信号时开始或延续对“价值”列的累积求和,而在没有这些信号时则不进行求和。

考虑以下数据示例:

Date Buy Sell Value Cumulative Sum
01/01/2023 1
01/02/2023 1 5 5
01/03/23 1 6
01/04/23 1 7
01/05/23 1 1 8
01/06/23 5

在这个例子中,“Cumulative Sum”列的计算逻辑是:

  • 当“Buy”或“Sell”列出现“1”时,开始或延续累积求和。
  • 一旦累积求和开始,它会持续到下一个“Buy”或“Sell”信号出现,或者直到数据结束。
  • 没有“Buy”或“Sell”信号的行,如果之前也没有激活的信号,则“Cumulative Sum”为空。

直接使用 cumsum() 函数无法满足这种条件和状态变化的复杂逻辑。手动循环虽然可行,但在大型数据集中效率低下。因此,我们需要一种利用 Pandas 向量化操作的解决方案。

算家云
算家云

高效、便捷的人工智能算力服务平台

算家云 37
查看详情 算家云

2. Pandas 解决方案详解

本解决方案将通过一系列 Pandas 操作,逐步构建出所需的条件累积和。

2.1 准备数据

首先,我们创建一个示例 DataFrame 来模拟上述场景:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06',
             '2023-01-07', '2023-01-08', '2023-01-09', '2023-01-10', '2023-01-11', '2023-01-12'],
    'buy': [np.nan, 1, np.nan, np.nan, np.nan, np.nan, np.nan, 1, np.nan, np.nan, np.nan, np.nan],
    'sell': [np.nan, np.nan, np.nan, np.nan, 1, np.nan, np.nan, np.nan, np
登录后复制

以上就是基于多列条件计算累积和的 Pandas 教程的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号