cluster_id bin_time trial_time spikes 1 0 0.5 1 2 5 0.7 0 6 0 0.5 5 3 5 0.7 0 2 5 0.5 1 8. 0. 0.7. 0
前三列有一些重复的值。我想对峰值(最后一列)进行分组,以便对于每个唯一的trial\u时间和bin\u时间的唯一值,我得到峰值的总和。具有不同cluster\u id的尖峰应根据其所属的试验和bin\u时间(计入总和,该维度可以消失)组合在一起。
最后,我试图得到一个矩阵,该矩阵在Y轴上具有唯一的trial\u时间坐标,在X轴上具有唯一的bin\u时间坐标,每个条目都是尖峰的总和(因此我不关心基于“cluster\u id”的微分)。
以下是我尝试的内容:
new_df = groupby('trial_time')['spikes']apply(lambda x: list(x))
trial 0.5, bin time 0 --> count of total 1+5=6 spikes trial 0.5, bin time 5 --> count of total 1 spike trial 0.7, bin time 0 --> count of 0 spikes trial 0.7, bin time 5 --> count of 0+0 = 0
理想情况下,只有尖峰数的2d阵列。
按两列分组,并通过求和进行聚合。分组时不要使用第一列,因为你不在乎它。
qf = df.iloc[:,1:].groupby(['bin_time','trial_time']).agg(sum) #qf = df.loc[:,['bin_time','trial_time','spikes']].groupby(['trial_time','bin_time']).agg(sum)
trial_time bin_time 0.5 0.0 6 5.0 1 0.7 5.0 0 0.7. 0.0 0