如何在Pandas中基于初始值与百分比变化生成新累计列?
Pandas 实现 Items 累计列计算
问题场景
你有一个包含items列和percentage列的初始DataFrame,需要生成累计items列——这种文本累计拼接的效果在Excel/Google Sheets里很容易实现,但在Pandas中不知道怎么操作。
核心解决方案
Pandas的cumsum()方法支持直接对字符串列进行累计拼接,这是最简洁高效的实现方式。
1. 基础实现(按原顺序累计)
先构造模拟的初始DataFrame:
import pandas as pd df = pd.DataFrame({ 'items': ['A', 'B', 'C', 'D'], 'percentage': [0.2, 0.3, 0.1, 0.4] })
执行以下代码生成累计列:
# 直接对items列调用cumsum(),自动完成字符串累计拼接 df['累计items'] = df['items'].cumsum()
执行后得到的结果:
| items | percentage | 累计items |
|---|---|---|
| A | 0.2 | A |
| B | 0.3 | AB |
| C | 0.1 | ABC |
| D | 0.4 | ABCD |
2. 进阶场景(按百分比排序后累计)
如果需要先按percentage排序再生成累计列,可先排序再调用cumsum():
# 按百分比降序排序(升序则把ascending设为True) df_sorted = df.sort_values('percentage', ascending=False) # 生成排序后的累计列 df_sorted['累计items'] = df_sorted['items'].cumsum() # 若要保留原DataFrame的原始顺序,通过合并还原 df = df.merge(df_sorted[['items', '累计items']], on='items', how='left')
内容的提问来源于stack exchange,提问作者Federico Livi
相关产品推荐
相关产品推荐

