pandasでクリップボードの中身をDataFrameとして取得するread_clipboard
pandasの関数read_clipboard()
を使うと、実行時にクリップボードに保存されている内容をDataFrame
として読み取ることができる。スクリプトファイル.py
だと使いにくいかもしれないが、Jupyter Notebookなどの対話的な環境で使うとすごく便利。
なお、read_clipboard()
とは逆にDataFrame
をクリップボードにコピーするメソッドto_clipboard()
も用意されている。以下の記事参照。
read_clipboard()
デフォルトでは引数sep='\\s+'
で、空白がデリミタ(区切り文字)となっている。
Webページの表(table
要素)や、ExcelやNumbersなどの表計算ソフトのセルをコピーすると空白で区切られてコピーされるので、そのままDataFrame
に変換できる。
Python - Wikipediaの表をコピーしてread_clipboard()
を実行する例を示す。最後にto_csv()
メソッドでcsvファイルとして保存している。
import pandas as pd
df = pd.read_clipboard()
print(df)
# バージョン リリース日[16]
# 0 3.0 2008年12月3日
# 1 3.1 2009年6月27日
# 2 3.2 2011年2月20日
# 3 3.3 2012年9月29日
# 4 3.4 2014年3月16日
# 5 3.5 2015年9月13日
# 6 3.6 2016年12月23日
df.to_csv('data/dst/test.csv')
コピーした内容が空白で区切られていない場合は引数sep
を適宜設定する。例えば、カンマ,
区切りの場合はread_clipboard(sep=',')
とすればOK。
read_clipboard()
はクリップボードの中身をread_table()
に渡しているだけなので、引数はread_table()
やread_csv()
と同じ。細かい引数の説明などは以下の記事を参照。
例えば、デフォルトでは上の例のように最初の行(ヘッダー)が列名columns
として扱われる。ヘッダーがない表に対しては引数header=None
とすればよい。
なお、特定のWebページの表を定期的に読み込んだり、同じレイアウトの大量のExcelファイルから特定の位置のデータを読み込んだりする場合は、いちいちクリップボードにコピーするよりもread_html()
やread_excel()
を使うほうが楽。以下の記事を参照。