![](/img/trans.png)
[英]Iterate through multiple columns in a Panda dataframe and find count unique values
[英]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.