我有一段以前有用的代码。它遍历一个字典,从该列的值中减去该列的第一个值,然后创建一个具有差值的新列。然而,今天我再次运行相同的代码,而不是不同的分数,现在我得到了一堆南。但是,我无法确定是什么改变了,为什么它以前有效,而不是现在(可能是更新?)
我尝试了三种不同的方法来做减法运算(如图所示,对我的代码进行了注释),但都不起作用,它们都得到了相同的NaNs结果
HR_temp = []
pp_num = physiodata_dict[f"ICGavg_Predator_1_RESULTS"]['PP_ID'].unique()
for pp in pp_num:
pp_data = physiodata_dict["ICGavg_Predator_1_RESULTS"][physiodata_dict["ICGavg_Predator_1_RESULTS"]["PP_ID"]==pp][['PP_ID','Epoch','HR']]
# HR_temp.append(list((pp_data['HR'])-(pp_data['HR'][pp_data['Epoch']==0])))
# HR_temp.append(list(pp_data['HR'].sub(pp_data['HR'][pp_data['Epoch']==0])))
HR_temp.append(list(np.subtract(pp_data['HR'], pp_data['HR'][pp_data['Epoch']==0])))
physiodata_dict['ICGavg_Predator_1_RESULTS']['HR_0'] = [item for sublist in HR_temp for item in sublist]a
physiodata_dict["ICGavg_Predator_1_RESULTS"][['HR', 'HR_0', ]][0:10]
我预期的结果是:
HR HR_0
0 56.8954 0.0
1 59.7356 2.8402
2 57.0018 0.1064
3 55.8712 -1.0242
4 58.13 1.2346
输出为:
HR HR_0
0 56.8954 0.0
1 59.7356 NaN
2 57.0018 NaN
3 55.8712 NaN
4 58.13 NaN
这是因为数列减法是按元素进行的,而你的一个数列只有一个元素。所有其他的都没有从中减去任何一个而产生NaN。您需要得到第一个值:
但最好是这样(注意,我已经模拟了您的复杂数据表,在其中添加了两个不同的PP\u id,因此最后的数字与第一个示例不同):
相关问题 更多 >
编程相关推荐