きれいに印刷されたデータフレームをPandasデータフレームに読み込む方法は?
Aug 23 2020
# necessary imports
from tabulate import tabulate
import pandas as pd
私はデータフレームを持っています:
df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
これを使用して、私はそれをきれいに印刷します:
prettyprint=tabulate(df, headers='keys', tablefmt='psql')
print(prettyprint)
結果:
+----+-----+-----+-----+-----+
| | A | B | C | D |
|----+-----+-----+-----+-----|
| 0 | A0 | B0 | C0 | D0 |
| 1 | A1 | B1 | C1 | D1 |
| 2 | A2 | B2 | C2 | D2 |
| 3 | A3 | B3 | C3 | D3 |
+----+-----+-----+-----+-----+
テキストファイルに保存する:
with open("PrettyPrintOutput.txt","w") as text_file:
text_file.wite(prettyprint)
多くのテキスト処理を手動で行わずPrettyPrintOutput.txt
に、データフレームに読み戻すにはどうすればよいですか?
回答
2 above_c_level Aug 23 2020 at 15:25
1つの解決策は、pd.read_csv
/で巧妙なキーワード引数を使用することですpd.read_clipboard
。
df = pd.read_csv(r'PrettyPrintOutput.txt', sep='|', comment='+', skiprows=[2], index_col=1)
df = df[[col for col in df.columns if 'Unnamed' not in col]]
'+'で始まるすべての行をコメントとして定義するだけなので、インポートされません。これは、skiprowを使用して除外する必要がある3番目の行に対しては役に立ちません。
'|'を使用して追加の列が作成されるため、2行目が必要です。セパレーターとして。事前に列名がわかっている場合は、キーワードusecols
を明示的に使用してください。
出力:
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
pd.read_clipboard
関数は同じキーワード引数を受け入れるため、これも機能します。