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

将熊猫数据帧输出格式化为一个文本文件,作为一个表格(格式化并与数据或标题的最大长度对齐(越长越好))

  •  1
  • Rohit12  · 技术社区  · 2 年前
    pd.DataFrame({
            'ID': {
                0: 11404371006,
                1: 11404371007,
                2: 11404371008,
                3: 11404371009,
                4: 11404371010,
                5: 11404371011
            },
            'TABLE.F1': {
                0: 'Y',
                1: 'NULL',
                2: 'N',
                3: 'N',
                4: 'N',
                5: 'N'
            },
            'O': {
                0: False,
                1: False,
                2: False,
                3: False,
                4: False,
                5: False
            }
        })`enter code here`
    

    我有上面的数据框,希望将输出保存在一个文件中,作为管道分隔的数据,如下所示。

    Expected Output

    到目前为止,我试过pd。至csv和pd。对于\u string(),两者都以表格格式输出数据,但数据未与列标题或数据的最大长度对齐。

    to\u字符串()

    actual output with pd.to_string()

    至\u csv()

    when using pd.to_csv(index=False, sep='|',line_terminator='|\n')

    1 回复  |  直到 2 年前
        1
  •  3
  •   Corralien    2 年前

    使用 to_markdown :

    out = df.to_markdown(index=False, tablefmt='pipe', colalign=['center']*len(df.columns))
    print(out)
    
    # Output:
    |     ID      |  TABLE.F1  |   O   |
    |:-----------:|:----------:|:-----:|
    | 11404371006 |     Y      | False |
    | 11404371007 |    NULL    | False |
    | 11404371008 |     N      | False |
    | 11404371009 |     N      | False |
    | 11404371010 |     N      | False |
    | 11404371011 |     N      | False |
    

    要删除第二行:

    out = out.split('\n')
    out.pop(1)
    out = '\n'.join(out)
    print(out)
    
    # Output
    |     ID      |  TABLE.F1  |   O   |
    | 11404371006 |     Y      | False |
    | 11404371007 |    NULL    | False |
    | 11404371008 |     N      | False |
    | 11404371009 |     N      | False |
    | 11404371010 |     N      | False |
    | 11404371011 |     N      | False |