标签:multi-index python pandas dataframe
我的数据看起来像这样(ch = channel,det = detector):
ch det time counts
1 1 0 123
2 0 121
3 0 125
2 1 0 212
2 0 210
3 0 210
1 1 1 124
2 1 125
3 1 123
2 1 1 210
2 1 209
3 1 213
注意,实际上,时间列是具有12个左右有效数字的浮点数,对于1个测量的所有检测器仍然是恒定的,但是其值不可预测,也不是序列.
我需要创建的是一个如下所示的数据框:
c time mean_counts_over_detectors
1 0 xxx
2 0 yyy
1 1 zzz
1 1 www
即,我想分别在每个时间点对所有1个通道的探测器应用np.mean.我可以写kludgy循环,但我觉得大熊猫必须有内置的东西.我仍然是熊猫的初学者,尤其是MultiIndex有很多概念,我不确定我应该在文档中寻找什么.
标题包含’条件’,因为我认为可能事实上我希望一个通道的所有检测器的平均值对于时间相同的计数可以表示为切片条件.
解决方法:
与@meteore相同,但具有MultiIndex.
In [55]: df
Out[55]:
counts
ch det time
1 1 0 123
2 0 121
3 0 125
2 1 0 212
2 0 210
3 0 210
1 1 1 124
2 1 125
3 1 123
2 1 1 210
2 1 209
3 1 213
In [56]: df.index
Out[56]:
MultiIndex
[(1L, 1L, 0L) (1L, 2L, 0L) (1L, 3L, 0L) (2L, 1L, 0L) (2L, 2L, 0L)
(2L, 3L, 0L) (1L, 1L, 1L) (1L, 2L, 1L) (1L, 3L, 1L) (2L, 1L, 1L)
(2L, 2L, 1L) (2L, 3L, 1L)]
In [57]: df.index.names
Out[57]: ['ch', 'det', 'time']
In [58]: df.groupby(level=['ch', 'time']).mean()
Out[58]:
counts
ch time
1 0 123.000000
1 124.000000
2 0 210.666667
1 210.666667
小心浮动和放大器groupby(这与MultiIndex无关),由于与浮点数相关的数值表示/精度限制,组可能不同.
标签:multi-index,python,pandas,dataframe 来源: https://codeday.me/bug/20190901/1784657.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。