如何将字符串从 df.to_string() 转换回 DataFrame [重复]
Posted
技术标签:
【中文标题】如何将字符串从 df.to_string() 转换回 DataFrame [重复]【英文标题】:How to convert string from df.to_string() back to DataFrame [duplicate] 【发布时间】:2018-05-15 17:47:31 【问题描述】:我知道DataFrame可以用to_string函数转成字符串:
import pandas as pd
df = pd.DataFrame('A' : ['one', 'one', 'two', 'three'] * 3,
'B' : ['Aa', 'Bb', 'Cc'] * 4)
dfstr = df.to_string()
print(dfstr)
输出:
A B
0 one Aa
1 one Bb
2 two Cc
3 three Aa
4 one Bb
5 one Cc
6 two Aa
7 three Bb
8 one Cc
9 one Aa
10 two Bb
11 three Cc
如何将这个 dfstr
转换回 DataFrame 对象?
编辑:
我特别问的是如何将df.to_string()
函数创建的字符串转换回数据框对象,而不是像How to create a Pandas DataFrame from a string 上讨论的将文本数据(字符串)转换为数据框的一般方法。
【问题讨论】:
如果没有包含文件路径作为参数,pandas 数据帧的.to_csv()
方法将返回 csv 文件的内容作为字符串。可以使用io.StringIO()
和pd.read_csv()
读取返回的字符串,无需特殊参数。我不知道您为什么要使用 .to_string()
方法,但是在几乎所有您想要输出一个字符串的情况下,该字符串以后可以在没有文件路径参数的情况下读取为 csv .to_csv()
是最好的选择。
看起来很不错的建议。您应该将此添加为答案。
【参考方案1】:
将read_csv
与StringIO
一起使用:
from pandas.compat import StringIO #if this doesn't work try: from io import StringIO
df = pd.read_csv(StringIO(dfstr), sep='\s+')
print (df)
A B
0 one Aa
1 one Bb
2 two Cc
3 three Aa
4 one Bb
5 one Cc
6 two Aa
7 three Bb
8 one Cc
9 one Aa
10 two Bb
11 three Cc
【讨论】:
是否有任何理由不将其作为过去许多类似问题之一的副本关闭?我找到的第一个是this。 @DSM - 很抱歉,如果你这么认为,如果关闭问题也没问题。以上是关于如何将字符串从 df.to_string() 转换回 DataFrame [重复]的主要内容,如果未能解决你的问题,请参考以下文章