2016-07-06 95 views
1

我有輸出看起來像這樣的Python的 - 打印表樣數據乾淨

AB%CD3_SW3Z_1000 uvsec_czrkup_rmplr SeightRveZargrp def_move 35.8% 28.0% 16.2% 120 0.0010 
MN%P03_AT%W00_500 uvsec_czrkup_rmplr SeightRveZargrp def_move 28.8% 24.7% 23.4% 94 0.1000 
KE_A03_UVA%Q00_100 uvsec_czrkup_rmplr SeightRveZargrp def_move 27.2% 11.8% 3.5% 398 0.010 

什麼是格式化爲

AB%CD3_SW3Z_1000 uvsec_czrkup_rmplr SeightRveZargrp def_move 35.8% 28.0% 16.2% 120 0.0010 
MN%P03_AT%W00_500 uvsec_czrkup_rmplr SeightRveZargrp def_move 28.8% 24.7% 23.4% 94 0.1000 
KE_A03_UVA%Q00_100 uvsec_czrkup_rmplr SeightRveZargrp def_move 27.2% 11.8% 3.5% 398 0.010 

當然最清潔,最優雅的方式,我問在一般情況下,假設每條線具有相同數量的令牌。我想讓列左對齊。

+0

問題是,它是一個數據框。當我印刷它時,它會像這樣混亂。 –

回答

1

我已經使用PrettyTables在過去,這類型的應用程序和這個功能:

def format_df(df):  
    table = PrettyTable([''] + list(df.columns)) 
    for row in df.itertuples(): 
     table.add_row(row) 
    return str(table) 

完整的例子,使用您的輸入看起來是這樣的:

import pandas as pd 
from prettytable import PrettyTable 

def format_df(df):  
    table = PrettyTable([''] + list(df.columns)) 
    for row in df.itertuples(): 
     table.add_row(row) 
    return str(table) 

df = pd.read_clipboard(header=None) # No header provided on example input 
print(format_df(df)) 

這會產生以下結果。標題名稱不好,因爲您的示例數據中沒有提供標題:

+---+--------------------+--------------------+-----------------+----------+-------+-------+-------+-----+-------+ 
| |   0   |   1   |  2  | 3  | 4 | 5 | 6 | 7 | 8 | 
+---+--------------------+--------------------+-----------------+----------+-------+-------+-------+-----+-------+ 
| 0 | AB%CD3_SW3Z_1000 | uvsec_czrkup_rmplr | SeightRveZargrp | def_move | 35.8% | 28.0% | 16.2% | 120 | 0.001 | 
| 1 | MN%P03_AT%W00_500 | uvsec_czrkup_rmplr | SeightRveZargrp | def_move | 28.8% | 24.7% | 23.4% | 94 | 0.1 | 
| 2 | KE_A03_UVA%Q00_100 | uvsec_czrkup_rmplr | SeightRveZargrp | def_move | 27.2% | 11.8% | 3.5% | 398 | 0.01 | 
+---+--------------------+--------------------+-----------------+----------+-------+-------+-------+-----+-------+ 
1

可以這樣做的一種方法是使用str.ljust(width)(假設您已將所有內容都轉換爲字符串)填充每行中的每個標記以使列中的每個標記具有相同的寬度。要確定要使用的寬度,可以設置固定寬度(如果知道令牌的最大可能長度),或者可以通過獲取每列中的最大條目來設置每列的固定寬度。