
在数据分析中,我们经常需要对某一列数据进行累积求和(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”列的计算逻辑是:
直接使用 cumsum() 函数无法满足这种条件和状态变化的复杂逻辑。手动循环虽然可行,但在大型数据集中效率低下。因此,我们需要一种利用 Pandas 向量化操作的解决方案。
本解决方案将通过一系列 Pandas 操作,逐步构建出所需的条件累积和。
首先,我们创建一个示例 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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号