187

次のように、パンダのデータフレームを素敵なテキストベースのテーブルとして印刷するにはどうすればよいですか?

+------------+---------+-------------+
| column_one | col_two |   column_3  |
+------------+---------+-------------+
|          0 |  0.0001 | ABCD        |
|          1 |  1e-005 | ABCD        |
|          2 |  1e-006 | long string |
|          3 |  1e-007 | ABCD        |
+------------+---------+-------------+
4

8 に答える 8

8

私はオファーの答えをしばらく使用しましたが、ほとんどの場合、それは素晴らしいと思いました。残念ながら、 pandasの to_csvprettytableの from_csv の間に矛盾があるため、別の方法で prettytable を使用する必要がありました。

失敗例の 1 つは、コンマを含むデータフレームです。

pd.DataFrame({'A': [1, 2], 'B': ['a,', 'b']})

Prettytable は次の形式のエラーを発生させます。

Error: Could not determine delimiter

次の関数は、このケースを処理します。

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

インデックスを気にしない場合は、次を使用します。

def format_for_print2(df):    
    table = PrettyTable(list(df.columns))
    for row in df.itertuples():
        table.add_row(row[1:])
    return str(table)
于 2014-06-06T10:36:53.790 に答える
8

何らかの理由で Jupyter を使用していない場合、たとえば、コンソールで簡単なテストを行いたい場合は、DataFrame.to_string少なくとも Pandas 0.12 (2014) 以降で機能するメソッドを使用できます。 .

import pandas as pd

matrix = [(1, 23, 45), (789, 1, 23), (45, 678, 90)]
df = pd.DataFrame(matrix, columns=list('abc'))
print(df.to_string())

#  outputs:
#       a    b   c
#  0    1   23  45
#  1  789    1  23
#  2   45  678  90
于 2019-07-11T15:15:04.670 に答える