如何基于计算规则将Pandas单个数据行拆分为多条独立行?
Pandas 按季度拆分单行到多行解决方案
实现代码
方式1:先创建Quarterly列再拆分
适合需要调试查看中间计算结果的场景,代码如下:
import pandas as pd # 初始数据 df = pd.DataFrame({"Name": ["Bob", "Mary", "Amy"], "Age": [22, 35, 58], "EarningsYearly": [100,200,50],}) # 计算季度收入 df['Quarterly'] = df['EarningsYearly'] / 4 # 为每行添加四个季度的列表 df['Quarter'] = [['Q1', 'Q2', 'Q3', 'Q4']] * len(df) # 拆分列表到多行 df_exploded = df.explode('Quarter', ignore_index=True)
方式2:创建Quarterly列同时完成拆分
无需提前生成中间列,代码更简洁:
import pandas as pd df = pd.DataFrame({"Name": ["Bob", "Mary", "Amy"], "Age": [22, 35, 58], "EarningsYearly": [100,200,50],}) df_exploded = ( df.assign( Quarterly = df['EarningsYearly'] / 4, Quarter = [['Q1', 'Q2', 'Q3', 'Q4']] * len(df) ) .explode('Quarter', ignore_index=True) )
输出效果
两种方式最终得到的结果一致,如下:
Name Age EarningsYearly Quarterly Quarter 0 Bob 22 100 25.0 Q1 1 Bob 22 100 25.0 Q2 2 Bob 22 100 25.0 Q3 3 Bob 22 100 25.0 Q4 4 Mary 35 200 50.0 Q1 5 Mary 35 200 50.0 Q2 6 Mary 35 200 50.0 Q3 7 Mary 35 200 50.0 Q4 8 Amy 58 50 12.5 Q1 9 Amy 58 50 12.5 Q2 10 Amy 58 50 12.5 Q3 11 Amy 58 50 12.5 Q4
疑问说明
- 不需要必须先创建Quarterly列再拆分,两种操作顺序都支持,可根据自己的使用场景选择。
explode方法需要Pandas版本≥0.25,如使用更早版本可通过repeat + merge的方式实现相同效果。
内容的提问来源于stack exchange,提问作者Lostsoul
相关产品推荐
相关产品推荐

