簡體   English   中英

基於多個熊貓列的唯一值進行分組

[英]Grouping based on unique values of multiple panda columns

我有以下數據框(有數千行,這只是一個示例):

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 的尖峰應該只是根據它們所屬的試驗和 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM