代码之家  ›  专栏  ›  技术社区  ›  mccandar

python prettytable get_字符串错误

  •  1
  • mccandar  · 技术社区  · 6 年前

    我有一个熊猫数据帧

    >>> df
    Out[126]: 
          score        id
    0  0.999989    654153
    1  0.992971    941351
    2  0.979518    701608
    3  0.972667    564000
    4  0.936928    999843
    

    并希望转换为 漂亮的 (为了写入可读性更好的文本文件)

    import prettytable as pt
    x = pt.PrettyTable()
    for col in list(df.columns):
        x.add_column(col,df[col])
    

    然后在函数内部,我使用

    print(x.get_string())
    

    然后得到这个错误

    File "<ipython-input-130-8db747160a67>", line 5, in <module>
    verbose   = True)
    
    File "<ipython-input-129-4e27c067e0b5>", line 104, in lda_save_eval
    print(x.get_string())
    
    File "C:\Users\USER\Anaconda3\envs\tensorflow\lib\site-packages\prettytable.py", line 990, in get_string
    self._compute_widths(formatted_rows, options)
    
    File "C:\Users\USER\Anaconda3\envs\tensorflow\lib\site-packages\prettytable.py", line 894, in _compute_widths
    widths = [_get_size(field)[0] for field in self._field_names]
    
    File "C:\Users\USER\Anaconda3\envs\tensorflow\lib\site-packages\prettytable.py", line 894, in <listcomp>
    widths = [_get_size(field)[0] for field in self._field_names]
    
    File "C:\Users\USER\Anaconda3\envs\tensorflow\lib\site-packages\prettytable.py", line 77, in _get_size
    lines = text.split("\n")
    
    AttributeError: 'int' object has no attribute 'split'
    

    有什么线索吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mohamed Thasin ah    6 年前

    尝试 print (x.get_string()) 而不是 print(x.get_string)

    为了改进,试试这个, 为了写入可读性更好的文本文件,不需要循环使用 tabulate 它让你更灵活。

    试试这个,

    from tabulate import tabulate
    print (tabulate(df,df.columns,tablefmt='psql'))
    

    tablefmt 您可以提供许多选项来获得不同的样式。 有关详细信息,请参阅 link