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

如何从带复选框的Pandas DataFrame中获取选中行的id列值?

如何从带复选框的Pandas DataFrame中获取选中行的id列值?

看起来你已经在尝试处理带复选框的DataFrame了,不过在获取选中行的id值时走了点弯路,我来帮你调整下代码逻辑~

首先,你当前的代码里,row = df.loc[df["Delete"]] != df.loc[df["Delete"]].empty这行逻辑是有问题的,完全没必要这么写,反而会导致你拿到的不是想要的结果。咱们直接简化步骤:

正确的处理步骤

  1. 先筛选出所有被选中的行
    因为你的复选框列是Delete,被选中的行该列值会是True,所以直接用这个条件筛选:
    selected_rows = df.loc[df["Delete"] == True]
    
  2. 判断是否有选中的行
    替换你原来的判断逻辑,这样更清晰:
    if not selected_rows.empty:
    
  3. 获取id列的值
    • 如果你一次只会选中一行,想要单个id值,直接用iloc[0]取第一行的id:
      entryid = selected_rows['id'].iloc[0]
      
    • 如果允许选中多行,想要所有选中的id组成的列表,就用tolist():
      entryid_list = selected_rows['id'].tolist()
      

修正后的完整代码片段

df = pagination.data_editor(data=pages[current_page - 1], use_container_width=True,
                            disabled=['Date','Day','Project','Task','StartTime','EndTime','Note','Total_Hours'],
                            column_order=['Date','Day','Project','Task','StartTime','EndTime','Total_Hours','Note','Delete','Edit'],
                            column_config=config,
                            key='edit_df')

# 筛选选中的行
selected_rows = df.loc[df["Delete"] == True]
if not selected_rows.empty:
    # 单个id值(单选场景)
    entryid = selected_rows['id'].iloc[0]
    # 或者多行选中时的id列表
    # entryid_list = selected_rows['id'].tolist()

小提醒

要确保你的Delete列是布尔类型(True/False),Streamlit的data_editor里的复选框组件默认返回的就是布尔值,所以一般不用额外处理,但如果遇到异常情况,可以先确认下该列的数据类型哦。

备注:内容来源于stack exchange,提问作者Gurusewak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:24:30