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

使用ipysheet操作表格时如何为新增行填充数据(基于DataFrame)

解决方案

核心逻辑:ipysheet 行号从0开始计数,每次执行sheet.rows +=1新增行后,新行的索引为sheet.rows -1,直接调用ipysheet.cell()方法给对应位置的单元格赋值即可。如果需要和你维护的DataFrame联动,同步更新DataFrame数据即可。

修正后可直接运行的代码

import qgrid,ipysheet
from ipywidgets import widgets
import numpy as np
import pandas as pd

random_data = [['ABC','DEF','GHI'],
 [0.69494459,0.90502388,0.13374771],
 [0.89609645,0.66166011,0.12123602],
 [0.51229257,0.57240808,0.25482961],
 [0.25478973,0.08438657,0.76977642]]

df = pd.DataFrame(random_data, columns=["Col1", "Col2", "Col3"])
sheet = ipysheet.from_dataframe(df)
# 修正原代码笔误:原代码调用的wg没有导入,替换为已导入的widgets
btn = widgets.Button(description = 'Add Row')
def on_bttn_clicked(b):
    global df
    # 获取新行的索引
    new_row_index = sheet.rows
    # 新增行
    sheet.rows += 1
    # 给新行的3列分别赋值,value可替换为你的业务数据
    ipysheet.cell(new_row_index, 0, value=np.random.rand())
    ipysheet.cell(new_row_index, 1, value=np.random.rand())
    ipysheet.cell(new_row_index, 2, value=np.random.rand())
    # 同步更新本地维护的DataFrame
    df.loc[len(df)] = [
        sheet[new_row_index,0].value,
        sheet[new_row_index,1].value,
        sheet[new_row_index,2].value
    ]

btn.on_click(on_bttn_clicked)

display(btn,sheet)

DataFrame优先的同步方案(可选)

如果你所有数据操作都基于DataFrame完成,也可以先更新DataFrame,再直接同步到sheet对象,无需手动操作单元格:

def on_bttn_clicked(b):
    global df, sheet
    # 构造新行数据,可自定义
    new_row = pd.Series([np.random.rand(), np.random.rand(), np.random.rand()], index=df.columns)
    # 追加到原DataFrame
    df = pd.concat([df, new_row.to_frame().T], ignore_index=True)
    # 同步更新sheet
    sheet.data = ipysheet.from_dataframe(df).data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:57:03