2017-04-23 14 views
5

これは、印刷(some_pandas_DataFrame)を使用して、以前に書かれた文字列のうち、パンダのデータフレームを作成するように設計print()によって書き込まれた文字列からPython pandas DataFrameを取得するには?

pd_read_printed(str_printed_df)

便利な機能を提供する質問の更新バージョンです:

def pd_read_printed(str_printed_df): 
    global pd, StringIO 
    try: x = pd 
    except: import pandas as pd 
    try: x = StringIO 
    except: from pandas.compat import StringIO 
    return pd.read_csv(StringIO(str_printed_df), delim_whitespace=True) 

ここに私が次の質問への答えを得た後、それを一緒に使ってください:

は私が例::のためのように、その印刷されたバージョンでは、多くの場合、インターネットでパンダのデータフレームの内容を参照してください

df1_as_string = """ 
Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd 1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi 8 
""" 

質問です:スタイルで文字列変数からデータフレームを保持する変数を入手する方法like:

df1 = pandas.someToMeUnknownPandasFunction(df1_as_string) 

? NOW

のはdf1_as_stringからデータフレームを作成するために提供される関数を使用してみましょう:

print(df1) 

ができます:それは期待通りに働いていた場合

df1 = pd_read_printed(df1_as_string) 

をチェック

Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd  1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi  8 
+0

は、あなたが(pandas.read_clipboard 'を探しているかもしれません) '? – Serenity

+0

私はずっと前と同じ質問をしました:http://stackoverflow.com/questions/43172452/convert-text-table-to-pandas-dataframe –

+0

@benievはい...同様の質問ですが、あなたはそれを見落としましたそれはすでにその時点で回答していました:http://stackoverflow.com/questions/40117799/python-pandas-text-file-to-dataframe。 – Claudio

答えて

6

使用read_clipboard。セパレータを

df = pd.read_clipboard() 

それともread_csv一つ以上のwhitespace S - sep='\s+'またはdelim_whitespace=True

from pandas.compat import StringIO 

df = pd.read_csv(StringIO(df1_as_string), sep="\s+") 
df = pd.read_csv(StringIO(df1_as_string), delim_whitespace=True) 

print (df) 
    Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd  1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi  8 
+0

うれしいことができます!いい日! – jezrael

+0

'read_clipboard()' - SOの質問の例を扱う素晴らしい* tip * –

4

二つの方法

オプション1
pd.read_clipboard

これは、単純にフォーマットされたデータフレームのための私の後藤方法です。私はそうかもしれない私は、データフレームのテキストをコピーして、より複雑な構造を持つデータフレームについてdf = pd.read_clipboard()

オプション2
StringIO + pd.read_csv

でそれをフォローアップ、私はread_csvにいくつかのオプションが必要な場合がありますこのように設定してください。あなたが提供したデータフレームについては、私がデータフレームを取得するのが遅いため、この方法ではほとんど行いません。いずれの場合も

from io import StringIO 
import pandas as pd 

df1_as_string = """ 
Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd 1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi 8 
""" 

df = pd.read_csv(StringIO(df1_as_string), delim_whitespace=True) 

、私はで終わる:

print(df) 

    Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd  1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi  8 
関連する問題