簡體   English   中英

如何從print()編寫的字符串中獲取Python pandas DataFrame?

[英]How to get Python pandas DataFrame from string written by print()?

這是一個提供便利功能的問題的更新版本

pd_read_printed(str_printed_df)

旨在從之前使用print(some_pandas_DataFrame)編寫的字符串中創建一個pandas DataFrame:

 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) 

在我得到以下問題的答案之后,我把它放在一起供自己使用:

我在互聯網上經常看到pandas DataFrame在其印刷版中的內容,例如::

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 
"""

問題是:如何從類似以下樣式的字符串變量中獲取保存DataFrame的變量:

df1 = pandas.someToMeUnknownPandasFunction(df1_as_string)

現在讓我們使用提供的函數從df1_as_string創建一個df1_as_string

df1 = pd_read_printed(df1_as_string)

並檢查它是否按預期工作:

print(df1)

得到:

    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

使用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

兩種方法

選項1
pd.read_clipboard

這是我簡單格式化數據幀的goto方法。 我復制數據df = 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM