首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas面板花式索引:如何基于每个df中的多个列的布尔值返回面板中的所有DataFrames (索引

Pandas面板花式索引:如何基于每个df中的多个列的布尔值返回面板中的所有DataFrames (索引
EN

Stack Overflow用户
提问于 2012-11-22 12:21:21
回答 1查看 2.2K关注 0票数 7

我有一个Pandas Panel,它有许多具有相同行/列标签的DataFrames。我想用DataFrames制作一个新的面板,它基于几个列来满足特定的标准。

这对于数据帧和行来说很简单:假设我有一个df,zHe_compare。我可以使用以下命令获取合适的行:

代码语言:javascript
运行
复制
zHe_compare[(zHe_compare['zHe_calc'] > 100) & (zHe_compare['zHe_med'] > 100) | ((zHe_obs_lo_2s <=zHe_compare['zHe_calc']) & (zHe_compare['zHe_calc'] <= zHe_obs_hi_2s))]

但是我该怎么做(伪代码,简化的布尔值):

代码语言:javascript
运行
复制
good_results_panel = results_panel[ all_dataframes[ sum ('zHe_calc' < 'zHe_obs') > min_num ] ]

我知道内部的布尔值部分,但我如何为面板中的每个数据帧指定它?因为我需要来自每个df的多个列,所以我还没有成功地使用panel.minor_xs切片技术。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-03-24 18:40:38

正如在其documentation中提到的,Panel目前有点开发不足,所以您在使用DataFrame时所依赖的语法还没有出现。

同时,我建议使用Panel.select方法:

代码语言:javascript
运行
复制
def is_good_result(item_label):
    # whatever condition over the selected item
    df = results_panel[item_label]
    return df['col1'].sum() > 5

good_results = results.select(is_good_result)

is_good_result函数返回一个布尔值。请注意,它的参数不是DataFrame实例,因为Panel.select将其参数应用于项标签,而不是该项的DataFrame内容。

当然,如果你对简洁性感兴趣,你可以在一条语句中把整个标准函数塞进一个lambda中:

代码语言:javascript
运行
复制
good_results = results.select(
                 lambda item_label: results[item_label]['col1'].sum() > 5
                 )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13505843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档