python-3.x - 将前一行值添加到当前行等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
依此类推,将其当前值添加到之前的值
解决方案
采用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
推荐阅读
- python - 如何为 Mercurial Hooks 的 pyCharm 设置 python 解释器
- javascript - 如何在没有全局变量的情况下从html中的不同事件调用类方法
- sql - 将数据从另一个表单保存到 sql
- java - 为什么使用 maven-assembly-plugin 创建的可执行 jar 用于显示 classnotfound 错误的多模块 maven 项目
- java - 是否可以从 neo4j 获取属性的默认创建或更新时间?
- c++ - QSerialPort - 将字符转换为十六进制
- python - 哪个更有效:使用对象作为类属性?或者在需要时重新初始化?
- android - 如何在来自活动的片段中显示数据
- sas - 有没有办法立即解析在同一数据步骤中的数据步骤中创建的宏变量?
- reactjs - 如何将父级的道具存储在子组件中?