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

Jupyter Notebook生成带引号列名的value_counts代码问题

问题:循环生成DataFrame列value_counts代码时列名不带引号的问题

我编写了一个用于在Jupyter Notebook中创建新单元格的函数,尝试通过循环生成DataFrame各列的value_counts()代码,但遇到的问题是生成的代码中列名无法带上引号,总是固定显示为col。当前代码如下:

def create_new_cell(contents):
    shell = get_ipython()
    payload = dict(
        source='set_next_input',
        text=contents,
        replace=False,
    )
    shell.payload_manager.write_payload(payload, single=False)

def show_vc(col):
    col = (f'(col)')
    content = "df[{col_name}].value_counts()"\
        .format(col_name=col)
    create_new_cell(content)

我尝试将col = (f'(col)')替换为col = str(col)或col = "(col)"等方式都无效,希望解决该问题,使得执行以下循环时能生成正确的代码:

for x in df.columns:
    show_vc(x)

问题原因

问题核心在于show_vc函数中的col = (f'(col)')这行代码:你这里是把固定字符串'(col)'赋值给了变量col,完全覆盖了传入的列名参数。后续格式化字符串时,自然只会替换成col,而且没有添加引号来包裹列名。

修正后的代码

直接删除那行错误的赋值代码,在格式化字符串时给列名加上单引号即可:

def create_new_cell(contents):
    shell = get_ipython()
    payload = dict(
        source='set_next_input',
        text=contents,
        replace=False,
    )
    shell.payload_manager.write_payload(payload, single=False)

def show_vc(col):
    # 直接使用传入的col参数,格式化时添加单引号包裹列名
    content = "df['{col_name}'].value_counts()".format(col_name=col)
    create_new_cell(content)

或者使用f-string写法更简洁:

def show_vc(col):
    content = f"df['{col}'].value_counts()"
    create_new_cell(content)

效果验证

现在执行循环:

for x in df.columns:
    show_vc(x)

每个生成的新单元格中都会出现类似df['列名'].value_counts()的正确代码,列名被单引号包裹,直接运行就能查看对应列的数值统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:20:24