当前行 = 上一行 + 其他列上一行

问题描述

在 Jupyter Notebook 中,我生成了此代码,我正在尝试使 A 列的行等于当前值 = A 和 B 的先前值(生成 B 行)行,并且第一个结果生成良好但其他结果不好。如何正确地做到这一点? 2 周我不知道请帮忙?好的和坏的 csv 文件都在链接https://mab.to/pvOclXbt9

import pandas as pd
import numpy as np
pd.options.mode.chained_assignment = None
df = pd.read_csv (r'bad test.csv')
df

    A       B
0   30.50   31.240000
1   30.87   28.540000
2   0.00    26.860000
3   0.00    25.330000
4   0.00    25.577500
... ... ...
1455    0.00    215.018753
1456    0.00    197.567497
1457    0.00    199.776253
1458    0.00    199.522495
1459    0.00    201.189995
1460 rows × 2 columns

df.iloc[1:,1] =(0.5*df['A'].shift(1)+0.5*df['B'].shift(1))


         A
1        30.870000   #good
2        29.705000   #good
3        13.430000   #bad
4        12.665000   #bad
5        12.788750   #bad
           ...    
1455    106.581249
1456    107.509377
1457     98.783749
1458     99.888126
1459     99.761248
Name: B,Length: 1459,dtype: float64

#result is bad it is should be the like this:
         
A            B
30.5        31.24000025
30.87000012 28.53999996
29.70500004 26.86000013
28.28250009 25.32999992
26.80625001 25.57750034
26.19187517 25.09250021
25.64218769 25.45749998
25.54984384 25.81999969
25.68492177 25.07999992
25.38246084 23.54974985
24.46610535 22.4749999
23.47055263 22.06750011
22.76902637 22.5062499
22.63763814 23.39749956

#df['A']=0.5*df['A'].shift(1)+0.5*df['B'].shift(1) #but it s not wo

怎么做这个工作我不明白怎么做正确的结果?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)