首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:如何从现有值中添加用于循环的行

熊猫:如何从现有值中添加用于循环的行
EN

Stack Overflow用户
提问于 2022-10-26 11:24:31
回答 1查看 41关注 0票数 0

所以我有个密码:

代码语言:javascript
复制
monthly['differences'] = monthly.GMV.diff()
monthly['percentage'] = monthly.differences / (monthly.GMV - monthly.differences) *100
monthly

它产生了这个数据:

代码语言:javascript
复制
    GMV         differences percentage
date            
1   69793.30    NaN         NaN
2   65159.60    -4633.70    -6.639176
3   70397.10    5237.50     8.037956
4   68736.80    -1660.30    -2.358478
5   71402.75    2665.95     3.878490
6   68230.20    -3172.55    -4.443176
7   72557.90    4327.70     6.342792
8   68278.25    -4279.65    -5.898255
9   64180.05    -4098.20    -6.002204
10  64027.60    -152.45     -0.237535
11  70395.35    6367.75     9.945320
12  64701.15    -5694.20    -8.088887

我想从现有数据中添加新行with循环,我希望第13行具有以下值:

代码语言:javascript
复制
GMV13 = GMV12 + (GMV12 * percent12)
diff13= GMV13 - GMV12
percent13= diff13 / (GMV13 * diff13) * 100

对于第14行和开始,直到数据看起来有点像这样:(忽略值,这只是一个例子)

代码语言:javascript
复制
    GMV         differences percentage
date            
1   69793.30    NaN         NaN
2   65159.60    -4633.70    -6.639176
3   70397.10    5237.50     8.037956
4   68736.80    -1660.30    -2.358478
5   71402.75    2665.95     3.878490
6   68230.20    -3172.55    -4.443176
7   72557.90    4327.70     6.342792
8   68278.25    -4279.65    -5.898255
9   64180.05    -4098.20    -6.002204
10  64027.60    -152.45     -0.237535
11  70395.35    6367.75     9.945320
12  64701.15    -5694.20    -8.088887
13  70397.10    5237.50     8.037956
14  68736.80    -1660.30    -2.358478
15  71402.75    2665.95     3.878490
16  68230.20    -3172.55    -4.443176
17  72557.90    4327.70     6.342792
18  68278.25    -4279.65    -5.898255
19  64180.05    -4098.20    -6.002204
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 12:45:18

您可以在范围13.19中循环以从前面的行中计算新行:

代码语言:javascript
复制
def calc_new_val(old_row):
    new_row = pd.Series()
    new_row['GMV'] = old_row['GMV'] * (1 + old_row['percentage'] / 100)
    new_row['differences'] = new_row['GMV'] - old_row['GMV']
    new_row['percentage'] = new_row['differences'] / old_row['GMV'] * 100
    return new_row

for i in range(13, 20):
    monthly.loc[i, :] = calc_new_val(monthly.loc[i-1, :])

输出:

代码语言:javascript
复制
             GMV  differences  percentage
1   69793.300000          NaN         NaN
2   65159.600000 -4633.700000   -6.639176
3   70397.100000  5237.500000    8.037956
4   68736.800000 -1660.300000   -2.358478
5   71402.750000  2665.950000    3.878490
6   68230.200000 -3172.550000   -4.443176
7   72557.900000  4327.700000    6.342792
8   68278.250000 -4279.650000   -5.898255
9   64180.050000 -4098.200000   -6.002204
10  64027.600000  -152.450000   -0.237535
11  70395.350000  6367.750000    9.945320
12  64701.150000 -5694.200000   -8.088887
13  59467.547089 -5233.602911   -8.088887
14  54657.284403 -4810.262686   -8.088887
15  50236.118430 -4421.165973   -8.088887
16  46172.575577 -4063.542853   -8.088887
17  42437.728114 -3734.847463   -8.088887
18  39004.988241 -3432.739873   -8.088887
19  35849.918818 -3155.069423   -8.088887
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74206941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档