gpt4 book ai didi

pandas - 在flask html页面中编辑pandas数据框

转载 作者:行者123 更新时间:2023-12-03 15:37:02 25 4
gpt4 key购买 nike

在 flask 中编辑 Pandas 数据框的最佳方法是什么?

我有一个数据框,我想用 Flask 在 HTML 页面上输出它(有很多示例如何做到这一点)。但是,我不仅想输出它,还想使其可编辑。理想情况下,每个字段都应该是一个 html 输入字段。

我想避免必须手动创建表单然后将其重新转换为数据帧。有什么优雅的解决方案吗? pandas 或任何其他包是否提供任何可以简化该任务的功能?

最佳答案

您可以使用 df.style (一个 Styler 实例)渲染一个 DataFrame作为 HTML 输入的网格。

np.random.seed(0)

df = pd.DataFrame(np.random.randint(0, 100, (3, 3)))
df.style.format('<input name="df" value="{}" />').render()

这将呈现为

HTML table

如果将结果包装在 <form> 中并将其提交到某个端点,请求查询字符串(或 POST 正文)将如下所示

df=44&df=47&df=64&df=67&df=67&df=9&df=83&df=21&df=36 

请注意,这些是按行优先顺序排列的数据框的单元格。此时,您可以使用重新创建数据框
df = pd.DataFrame(np.asarray(request.values.getlist('df'), dtype=np.int).reshape((3, 3)))

正如您在评论中所建议的那样,另一种方法是使用列名命名 HTML 输入,以避免重新调整数据。
def html_input(c):
return '<input name="{}" value="{{}}" />'.format(c)

df.style.format({c: html_input(c) for c in df.columns}).render()

发送到服务器的数据看起来像

0=44&1=47&2=64&0=67&1=67&2=9&0=83&1=21&2=36

你可以使用恢复数据框
df = pd.DataFrame(request.values.lists())

这比上面的更优雅,除了需要创建格式化程序字典 {c: html_input(c) for c in df.columns} .不幸的是,格式化程序函数只传递值,没有任何索引信息。

关于pandas - 在flask html页面中编辑pandas数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470817/

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