如何从Streamlit交互式DataFrame提取指定列前n行转为列表并调用函数
实现从Streamlit交互式DataFrame提取指定列前n行转列表
核心思路
- 通过
st.data_editor获取用户交互后的最新DataFrame - 从返回的DataFrame中提取目标列,截取前n行并转换为列表
- 直接用该列表执行自定义业务函数
完整代码示例
import streamlit as st import pandas as pd # 构造示例原始数据 df = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David", "Eve"], "age": [25, 30, 35, 40, 45] }) # 展示交互式表格,获取用户编辑后的DataFrame edited_df = st.data_editor(df, num_rows="dynamic") # 定义提取参数 target_column = "name" top_n = 3 # 提取指定列前n行并转列表 result_list = edited_df[target_column].head(top_n).tolist() # 展示提取结果(可替换为你的业务函数调用) st.write(f"提取的前{top_n}行列表: {result_list}") # 示例业务函数:处理列表内容 def process_target_list(input_list): return [item.upper() for item in input_list] # 执行函数并展示结果 processed_output = process_target_list(result_list) st.write("处理后的结果: ", processed_output)
关键细节提示
st.data_editor返回的edited_df是实时更新的,包含用户对表格的所有修改(新增行、编辑单元格等)- 可以添加列名存在性判断避免报错:
if target_column in edited_df.columns: - 如果
top_n大于当前DataFrame的行数,head(top_n)会自动返回全部行,不会抛出异常
内容的提问来源于stack exchange,提问作者andypappy
相关产品推荐
相关产品推荐

