前回の記事に続いて、pytablewriterの機能の紹介です。
参考: pytablewriterでMarkdownの表を生成する
今回はpandasのDataFrameからMarkdownを生成します。
個人的には使う頻度が高いのはこちらです。
まずサンプルとなるデータを作っておきましょう。
import pandas as pd
df = pd.DataFrame(
data=[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
columns=['col1', 'col2', 'col3'],
index=["data1", "data2", "data3", "data4"]
)
print(df)
"""
col1 col2 col3
data1 1 2 3
data2 4 5 6
data3 7 8 9
data4 10 11 12
"""
早速、このDataFrameをMarkdownに変更します。
利用するのは、 from_dataframe と言うメソッドです。
ドキュメント: 4.4.3. Using pandas DataFrame as tabular data source
次のコードの例のように、 from_dataframe() にDataFrameを渡し、
write_table()メソッドを呼び出すと標準出力にマークダウンが出力されます。
from pytablewriter import MarkdownTableWriter
writer = MarkdownTableWriter()
writer.from_dataframe(df)
writer.write_table()
"""
|col1|col2|col3|
|---:|---:|---:|
| 1| 2| 3|
| 4| 5| 6|
| 7| 8| 9|
| 10| 11| 12|
"""
配列から生成するときはメソッドではなく属性にデータを代入していたのでちょっと使い方が違いますね。
さて、結果をご覧の通り、デフォルトではindexは出力されません。
もしindexが必要な場合は、 from_dataframe()を呼び出す時に、 add_index_column=True を指定する必要があります。
writer = MarkdownTableWriter()
writer.from_dataframe(df, add_index_column=True)
writer.write_table()
"""
| |col1|col2|col3|
|-----|---:|---:|---:|
|data1| 1| 2| 3|
|data2| 4| 5| 6|
|data3| 7| 8| 9|
|data4| 10| 11| 12|
"""
これでindexも出力されました。