【问题标题】:Refresh a Panda dataframe while printing using loop使用循环打印时刷新熊猫数据框
【发布时间】:2020-11-26 14:32:44
【问题描述】:

如何在使用循环时打印新数据帧并清除最后打印的数据帧? 所以它不会只显示输出中的最后一个数据帧吗?

使用 print(df, end="\r") 不起作用

import pandas as pd
import numpy as np

while True:
    df = pd.DataFrame(np.random.rand(10,10))
    print(df)

如果我从 api 获取实时数据以插入 df,我将使用 while 循环不断更新数据。但是我怎样才能只打印最新的数据帧,而不是在输出中打印彼此下方的所有数据帧?

如果我使用下面的 sn-p 它确实有效,但我认为应该有一个更优雅的解决方案。

import pandas as pd
import numpy as np

Height_DF = 10
Width_DF = 10

while True:
    
    df = pd.DataFrame(np.random.rand(10,10))
    print(df)

    for i in range(Height_DF + 1):
        sys.stdout.write("\033[F")

【问题讨论】:

  • 你有一个while True 循环,它会一直打印同样的东西。你到底在问什么?
  • 也许尝试将用户输入添加为“暂停”......这个问题有点令人困惑......试着解释一下你到底想要什么?
  • 如果我从 api 获取实时数据以打印到 df,我将使用 while 循环不断更新数据。但是我怎样才能只打印最新的数据帧而不是打印彼此下方的所有数据帧呢?

标签: python pandas dataframe printing


【解决方案1】:

试试这个:

import pandas as pd
import numpy as np
import time
import sys

while True:
    df = pd.DataFrame(np.random.rand(10,10))
    print(df)
    sys.stdout.write("\033[F")
    time.sleep(1)

【讨论】:

  • 您可以通过更改睡眠常数来调节打印和清除之间的时间。
  • sys.stdout.write("\033[F") 删除了 1 行,所以我必须在我的代码中复制并粘贴 11 次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2020-11-20
  • 2020-07-05
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多