Python 3.x 从不同的行中减去值

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

我有一个我正在读取的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 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'])