如何对分组聚合后的Pandas DataFrame筛选以实现PyQt绘图
解决方案
方法1:利用索引直接访问(推荐)
执行df.groupby('Experiment').agg(list)后,Experiment列会成为DataFrame的行索引,直接用.loc[]即可定位目标实验行:
# 假设聚合后的DataFrame命名为df_agg selected_row = df_agg.loc['Exp3'] # 提取绘图数据 data1 = selected_row['Data 1'] data2 = selected_row['Data 2']
拿到data1和data2后就可以直接传入pyqtgraph绘图。
方法2:聚合时保留Experiment为列
如果不想让Experiment作为索引,聚合时添加as_index=False参数,之后用布尔索引筛选:
# 聚合时不将Experiment设为索引 df_agg = df.groupby('Experiment', as_index=False).agg(list) # 筛选目标实验 selected_df = df_agg[df_agg['Experiment'] == 'Exp3'] # 提取数据(因筛选结果是单行DataFrame,用iloc[0]获取行数据) data1 = selected_df['Data 1'].iloc[0] data2 = selected_df['Data 2'].iloc[0]
关于你之前的错误
你调用的.filter()是pandas GroupBy对象的方法,不能直接用于聚合后的DataFrame,这是报错的核心原因;另外你代码里写错了列名(应该是Experiment而非Culture ID),也会导致逻辑错误。
内容的提问来源于stack exchange,提问作者Nuravaan
相关产品推荐
相关产品推荐

