gpt4 book ai didi

python - Pandas 面板花式索引 : How to return (index of) all DataFrames in Panel based on Boolean of multiple columns in each df

转载 作者:太空狗 更新时间:2023-10-29 21:58:51 26 4
gpt4 key购买 nike

我有一个 Pandas 面板,其中包含许多具有相同行/列标签的 DataFrame。我想用 DataFrames 制作一个新面板,满足基于几列的特定条件。

这对于数据框和行来说很容易:假设我有一个 df,zHe_compare。我可以获得合适的行:

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))]

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

good_results_panel = results_panel[ all_dataframes[ sum ('zHe_calc' < 'zHe_obs') > min_num ] ]

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

谢谢!

最佳答案

如其 documentation 中所述, Panel 目前还未完全开发,因此您在使用 DataFrame 时所依赖的优美语法还不存在。

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

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 函数返回一个 bool 值。请注意,它的参数不是 DataFrame 实例,因为 Panel.select 将其参数应用于项目标签,而不是 DataFrame 的内容项目。

当然,您可以在一个语句中将整个标准函数填充到一个 lambda 中,如果您喜欢整个简洁的事情:

good_results = results.select(
lambda item_label: results[item_label]['col1'].sum() > 5
)

关于python - Pandas 面板花式索引 : How to return (index of) all DataFrames in Panel based on Boolean of multiple columns in each df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com