我有以下数据框(有数千行,这里只是一个示例):
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_time和唯一的bin_time值,我得到峰值的总和。具有不同cluster_id的峰值应该根据它们所属的trial和bin_time分类在一起(计算在一个总和中,这个维度可以消失)。
最后,我试图得到一个矩阵,在Y轴上有一个唯一的trial_time坐标,在X轴上有唯一的bin_time坐标,每个条目都是峰值的总和(所以我不关心基于'cluster_id'的微分)。
这是我尝试的:
new_df = groupby('trial_time')['spikes']apply(lambda x: list(x))
但这仍然给我每个trial_time太多的重复值基于cluster_id…
将非常感谢任何帮助!我被卡住了。
对于我给出的小示例数据,我想要2D np数组的输出:
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
所以理想情况下,一个只有尖峰数的二维数组。
按两列分组,按求和进行汇总。分组时不要使用第一列,因为你并不关心它。
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