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()
あなたは<form>
で結果をラップし、いくつかのエンドポイント、リクエストのクエリ文字列(またはPOST
体)に提出した場合はこれが
としてレンダリングされますが
のようになります。
df=44&df=47&df=64&df=67&df=67&df=9&df=83&df=21&df=36
これらは、行優先順位のデータフレームのセルであることに注意してください。あなたがあなたのコメントには、別のアプローチは、データを再構築することを避けるために、列名と名前のHTML入力にある示唆したように、この時点で、あなたは
df = pd.DataFrame(np.asarray(request.values.getlist('df'), dtype=np.int).reshape((3, 3)))
使用してデータフレームを再作成することができます。サーバーに送信され
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}
を作成する必要があります。残念ながら、フォーマッタ関数は値だけを渡され、インデックス情報は渡されません。
その時点で、あなたはWebアプリケーションを作っているので、クリックするとテーブルの部分を編集可能なフィールドに変更するJavaScriptが必要になります.AJAX(またはWebソケット、ファンシーにしたい場合)編集が完了したとき等にフィールドを更新するなど –
JavaScriptは不要です。何らかの形でフォームやモデルを生成し、それをデータフレームに変換する送信ボタンを使ってサーバーに戻す方法があればうれしく思います。 – Nickpick