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

如何避免Python中实时输出DataFrame时反复出现重复列名

问题原因

你当前的代码每次循环都会创建独立的新DataFrame,每次调用display()都会完整输出新DF的列名+行内容,因此列名会随着输出次数重复出现。同时原代码存在while循环内部代码没有缩进的语法错误,也需要同步修正。

解决方法

这里提供两种常用场景的解决方案:

方案1:统一存储所有历史数据,仅显示一次列名

该方案将所有时间记录追加到同一个DataFrame中,仅在最顶部显示一次列名,保留所有历史输出记录:

import time
import pandas as pd
from datetime import datetime
import pytz
from IPython.display import clear_output

# 提前初始化空DataFrame,设置列名
df = pd.DataFrame(columns=['Datetime'])
IST = pytz.timezone('Asia/Kolkata')

while True:
    datetime_ist = datetime.now(IST) 
    Datetime = datetime_ist.strftime('%Y/%m/%d %H:%M:%S')
    # 向已有DF追加新行
    df.loc[len(df)] = [Datetime]
    # 清空之前的输出,避免重复打印整个DF历史
    clear_output(wait=True)
    display(df)
    time.sleep(1)

方案2:仅显示最新一行时间,不需要历史记录

该方案每次只输出最新的一行数据,首次输出显示列名,后续输出隐藏列名,适合仅需要查看实时时间的场景:

import time
import pandas as pd
from datetime import datetime
import pytz

IST = pytz.timezone('Asia/Kolkata')
# 新增标记位,控制是否显示列名
show_header = True

while True:
    datetime_ist = datetime.now(IST) 
    Datetime = datetime_ist.strftime('%Y/%m/%d %H:%M:%S')
    df = pd.DataFrame([Datetime], columns=['Datetime'])
    display(df if show_header else df.style.hide(axis='columns'))
    # 第一次输出后就关闭列名显示
    if show_header:
        show_header = False
    time.sleep(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:45:03