note.nkmk.me

pandasでクリップボードの中身をDataFrameとして取得するread_clipboard

Date: 2018-01-22 / tags: Python, pandas

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()を使うほうが楽。以下の記事を参照。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事