Python 3.x 从不同的行中减去值
我有一个我正在读取的csv文件,我有一列数字字符串,我试图得到后面两行之间的差异。数字的深度是“ft”跟在值后面(例如4.23ft),我可以去掉“ft”(例如4.230),但是我不知道如何分配值,所以我可以做数学运算Python 3.x 从不同的行中减去值,python-3.x,Python 3.x,我有一个我正在读取的csv文件,我有一列数字字符串,我试图得到后面两行之间的差异。数字的深度是“ft”跟在值后面(例如4.23ft),我可以去掉“ft”(例如4.230),但是我不知道如何分配值,所以我可以做数学运算 depth = float(depth) rate=0 '''Need to find a way to subtract next line from current line to find rate of change over 15 min
depth = float(depth)
rate=0
'''Need to find a way to subtract next line from current line to find
rate of change over 15 minute period'''
for i, data in enumerate(depth):
d1=i
d2=i+1
while rate == 0:
rate = d1-d2
print(rate)
这给了我一个类型错误“'float'对象不可编辑”。
当我注释掉“depth=float(depth)”行时,我只得到-1值,我理解这里的问题
第二行第一个值减去第二个值等于第三行的第一个值。因为您已经从列中删除了“ft”部分,并且假设您已经将字符串的剩余部分转换为float类型,我将直接跳到下一部分 如果我正确理解您想要实现的目标,您还可以使用: 您的D1是当前行中的值,D2通过执行shift操作将是D1中的列
df['D2'] = df['D1'].shift(-1)
您的数据帧现在看起来像:
D1 D2
0 1.0 2.0
1 2.0 3.0
2 3.0 4.0
3 4.0 5.0
4 5.0 NaN
简而言之,您可以将当前行的后续行中的值添加到新列中。现在可以像往常一样在两列之间执行减法/差分操作。例如:
df['D3'] = df['D1'] - df['D2']
或
运行此代码之前,
depth
中有什么内容?(请回答您的问题。“我的数据”或“csv中的某些行”对您没有帮助。)尝试了您的建议,现在我得到了“Series([],dtype:float64)”depth=float(depth)df=pd.DataFrame()df['d1']=depth df['d2']=df['d1'].shift(-1)df['rate']=df['d1']-df['d2']从打印行输出的打印(深度,d1,d2,速率):4.23 4 5系列([],dtype:float64)修复了“系列([],dtype:float64)”,但是我得到4的d1值应该与我得到4.23的深度值匹配,我想知道它是否被截断,但我仍然不知道为什么d2值会在应该是下一行的时候突然出现为5,这碰巧也是一个4.23,很抱歉响应太晚。你能通过编辑问题发布你的原始数据框和最终预期数据框吗?从评论中很难理解。我也为迟来的回复道歉,我相信我添加了您要求的信息,如果没有,我也为此道歉,并要求提供数据帧的定义。
df['D3'] = df['D1'] - df['D2']
df['D3'] = df['D1'].sub(df['D2'])