我有一个以下形式的 pandas DataFrame:
df
ID_col time_in_hours data_col
1 62.5 4
1 40 3
1 20 3
2 30 1
2 20 5
3 50 6
我想要做的是,使用 time_in_hours 列找到 data_col 的变化率。具体来说,
rate_of_change = (data_col[i+1] - data_col[i]) / abs(time_in_hours[ i +1] - time_in_hours[i])
其中 i 是给定的行,rate_of_change 是针对不同的 ID 分别计算的
实际上,我想要一个新的 DataFrame 形式:
new_df
ID_col time_in_hours data_col rate_of_change
1 62.5 4 NaN
1 40 3 -0.044
1 20 3 0
2 30 1 NaN
2 20 5 0.4
3 50 6 NaN
我该怎么做?
最佳答案
您可以使用 groupby :
s = df.groupby('ID_col').apply(lambda dft: dft['data_col'].diff() / dft['time_in_hours'].diff().abs())
s.index = s.index.droplevel()
s
返回
0 NaN
1 -0.044444
2 0.000000
3 NaN
4 0.400000
5 NaN
dtype: float64
关于python - 使用 Pandas 按不同列分组后,如何使用时间和数据列查找连续行的变化率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595038/