前提・実現したいこと
web上でエクセルのスプレッドシート的に示されたデータをコピペして、ちょっとしたプログラムを試してみたいことがあります。そこで、python, pandasにおいてプレインテキストデータから簡便にDataFrameを作成する方法を探しています。
データは例えばこんなやつですね:
A | B | C |
---|---|---|
10 | 20 | 30 |
20 | 40 | 80 |
R言語にはread.table関数というのがあり、次のようにして簡単にデータフレームを得ることができます。
> df1 <- read.table(text=" + A B C + 10 20 30 + 20 40 80 + ", header=T) > df1 A B C 1 10 20 30 2 20 40 80 >
pythonのPandasにおいて同じようなスタイルで利用できる関数はないのでしょうか?
私が知るところでは、pandas.DataFrameは引数として辞書型を受け取ってDataFrameを生成してくれますが、上記のようにテキストを直接受け付けてはくれません。もちろん、"a":[10, 20], "b":[20, 40] ...
などと辞書型オブジェクトを作ってもいいのですが、データの縦横を入れ替えるという作業が必要になりますし、それなりに面倒です。
試したこと
もちろんsplitを利用することによって相応の関数を作成することはできます。
python
1import pandas as pd 2 3def text2df(t): 4 tt = [x for x in t.split("\n")] 5 cols = tt[0].split() 6 df1 = pd.DataFrame(index=[x for x in range(0,len(tt)-1)], columns=cols) 7 for r in range(1, len(tt)): 8 ttt = tt[r].split() 9 for c in range (0, len(ttt)): 10 df1.iloc[r-1, c] = ttt[c] 11 return(df1)
天下のpythonなので、これぐらいのものはもっと遥かにシンプルでスマートな方法がとっくに用意されているんじゃないかと思っています。しかし、私が調べてみた限り見つかりません。
補足情報(FW/ツールのバージョンなど)
Python 2.x または Python 3.x
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/05 04:25