You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GWTC目录筛选无数据问题求助:Streamlit+Pandas代码排查

问题解决:GWTC目录数据加载异常及默认目录设置

问题根源

GWTC显示0条数据的核心问题是数据筛选逻辑错误:

  • 原代码用df['catalog.shortName'] == 'GWTC'筛选GWTC数据,但GWOSC公开数据里没有直接标记为GWTC的条目,所有GWTC体系事件都归类在带confident后缀的子目录(如GWTC-1-confident、GWTC-2.1-confident)中。
  • 后续对已空的event_df再执行str.contains('confident')过滤,自然无结果。
  • 另外count变量作用域错误,未选中目录时会触发报错。

修复后的完整代码

import streamlit as st
import pandas as pd

@st.cache_data
def load_and_group_data():
    df = pd.read_csv("https://gwosc.org/eventapi/csv/allevents/")
    
    catalogs = ['GWTC', 'GWTC-1-confident', 'GWTC-2', 'GWTC-2.1-confident', 'GWTC-3-confident', 'O3_Discovery_Papers']
    grouped_data = {}
    
    for catalog in catalogs:
        if catalog == 'GWTC':
            # 匹配所有GWTC系列的confident子目录事件
            event_data = df[df['catalog.shortName'].str.contains(r'GWTC-\d+(\.\d+)?-confident', regex=True)]
        else:
            # 其他目录保持精确匹配
            event_data = df[(df['catalog.shortName'] == catalog)]
        grouped_data[catalog] = event_data

    return grouped_data

grouped_data = load_and_group_data()

# 设置GWTC为默认选中目录
selected_catalog = st.selectbox('选择目录', grouped_data.keys(), index=grouped_data.keys().index('GWTC'))
if selected_catalog in grouped_data:
    event_df = grouped_data[selected_catalog]
    
    st.write(f"{selected_catalog} 目录数据:")
    st.write(event_df)
    
    # 修正作用域,仅在有效选中时计算事件数
    count = event_df.commonName.unique().size
    st.write(f"事件总数: {count}")

关键修改点

  • GWTC筛选逻辑修正:用正则表达式匹配所有GWTC体系下的confident子目录,确保获取全部约90条事件数据。
  • 默认目录设置:通过selectbox的index参数指定GWTC为默认选中项,启动时自动加载。
  • 作用域修复:将count的计算和输出移至有效选中判断块内,避免未选中时的变量未定义报错。

内容的提问来源于stack exchange,提问作者chris trejo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:50:13