如何将字符串从 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_csvStringIO 一起使用:

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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch - 如何将字符串从文件转换为日期?

如何从 JSON 字符串转换图像数据?

如何将指针从 strtok 转换为字符串? [关闭]

如何将公钥从字符串类型转换为 PEM

如何将特定字符从字符串转换为int(C)

如何将字符从 int 转换为“出现”在控制台中?