Cla*_*dio 7 python csv string python-3.x pandas
这是一个提供便利功能的问题的更新版本
pd_read_printed(str_printed_df)
旨在从之前使用print(some_pandas_DataFrame)编写的字符串中创建一个pandas DataFrame:
Run Code Online (Sandbox Code Playgroud)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
"""
Run Code Online (Sandbox Code Playgroud)
问题是:如何从类似以下样式的字符串变量中获取保存DataFrame的变量:
df1 = pandas.someToMeUnknownPandasFunction(df1_as_string)
Run Code Online (Sandbox Code Playgroud)
?
现在让我们使用提供的函数从df1_as_string以下位置创建DataFrame :
df1 = pd_read_printed(df1_as_string)
Run Code Online (Sandbox Code Playgroud)
并检查它是否按预期工作:
print(df1)
Run Code Online (Sandbox Code Playgroud)
得到:
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
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 10
df = pd.read_clipboard()
Run Code Online (Sandbox Code Playgroud)
或者read_csv使用分隔符一个或多个whitespaces - sep='\s+'或delim_whitespace=True:
from pandas.compat import StringIO
df = pd.read_csv(StringIO(df1_as_string), sep="\s+")
Run Code Online (Sandbox Code Playgroud)
df = pd.read_csv(StringIO(df1_as_string), delim_whitespace=True)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
两种方法
这是我用于简单格式化数据帧的 goto 方法。我复制数据框文本并跟进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)
Run Code Online (Sandbox Code Playgroud)
无论哪种情况,我最终都会得到:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |