ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在pandas.multiindex的级别上应用条件?

2019-09-01 16:57:04  阅读:181  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有