熊猫函数可将多输入功能应用于数据帧中的每个单元?

时间:2019-04-27 21:04:31

标签: python pandas

我正在通过读取大熊猫中的csv文件来建立数据帧,列代表一维位置自变量中不同样本的点,行分别代表0.01s的时间段。我想创建一个新的数据框来表示速度和加速度(因此基本上将操作[point(i)-point(i-1)]/0.01)应用于数据框中的每个单元格。

我在使用pandas.applymap或其他方法时遇到了麻烦,因为我不太清楚如何为每个操作引用数据帧中的多个参数(如果可以的话)。

    import pandas as pd
    import numpy as np

    data = pd.read_csv("file_name")
    def velocity(xf, xi):
        v = (xf - xi)*100
        return v

    velocity = data.applymap(velocity)

这是原始数据框的前几行和第几行:

    X LFHD   Y LFHD   Z LFHD   X RFHD   Y RFHD
0  700.003 -1769.61  1556.05  811.922 -1878.46
1  699.728 -1769.50  1555.99  811.942 -1878.14
2  699.465 -1769.38  1555.99  811.980 -1877.81
3  699.118 -1769.38  1555.83  812.005 -1877.48
4  699.017 -1768.78  1556.19  812.003 -1877.11

对于每列中的每个位置值,我想计算速度,其中初始位置值是上方的单元格(xi是速度函数中的输入),最终位置值是相关单元格(xf)。

当我尝试运行上面的代码时,它给了我一个错误,因为当期望速度为2时,仅为速度提供了一个参数。我不知道如何提供第二个参数,以便它输出适当的新数据帧,并在每个单元格中计算出速度。

1 个答案:

答案 0 :(得分:0)

df_velocity = data.diff()*100

df_velocity
Out[6]: 
   X_LFHD  Y_LFHD  Z_LFHD  X_RFHD  Y_RFHD
0     NaN     NaN     NaN     NaN     NaN
1   -27.5    11.0    -6.0     2.0    32.0
2   -26.3    12.0     0.0     3.8    33.0
3   -34.7     0.0   -16.0     2.5    33.0
4   -10.1    60.0    36.0    -0.2    37.0