根据多个熊猫列的唯一值分组



我有以下数据框(有数千行,这里只是一个示例):

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

最新更新