首页 > 解决方案 > 将前一行值添加到当前行等Python

问题描述

您好以下是我的数据集

           MD  Incl.    Azi.
0        0.00   0.00  350.00
1      161.00   0.00  350.00
2      261.00   0.00  350.00
3      361.00   0.00  350.00
4      461.00   0.00  350.00

我想执行计算,创建一个新列,并在此列中将行值添加到列中的前一行值,依此类推。

import pandas as pd
import math
import numpy as np

#open excel file
df = pd.read_excel
print(df)

for i in range (1, len(df)):
    incl = np.deg2rad(df['Incl.'])
    df['TVD_diff'] = (((df['MD'] - df['MD'].shift())/2)*(np.cos(incl).shift() + np.cos(incl)))

print(df)

           MD  Incl.    Azi.         TVD
0        0.00   0.00  350.00         NaN
1      161.00   0.00  350.00  161.000000
2      261.00   0.00  350.00  100.000000
3      361.00   0.00  350.00  100.000000
4      461.00   0.00  350.00  100.000000

我希望 TVD 专栏是

TVD
NaN
161
261
361
461

依此类推,将其当前值添加到之前的值

标签: python-3.xpandasnumpy

解决方案


采用cumsum

df['tvd'] = df['tvd'].cumsum()

例子:

import pandas as pd
import numpy as np
from io import StringIO

txt = """           MD  Incl.    Azi.
0        0.00   0.00  350.00
1      161.00   0.00  350.00
2      261.00   0.00  350.00
3      361.00   0.00  350.00
4      461.00   0.00  350.00"""

df = pd.read_csv(StringIO(txt), sep='\s\s+')

for i in range (1, len(df)):
    incl = np.deg2rad(df['Incl.'])
    df['TVD_diff'] = (((df['MD'] - df['MD'].shift())/2)*(np.cos(incl).shift() + np.cos(incl)))

df['TVD_diff'] = df['TVD_diff'].cumsum()

print(df)

输出:

      MD  Incl.   Azi.  TVD_diff
0    0.0    0.0  350.0       NaN
1  161.0    0.0  350.0     161.0
2  261.0    0.0  350.0     261.0
3  361.0    0.0  350.0     361.0
4  461.0    0.0  350.0     461.0

推荐阅读