将多行字符串转换为数据帧

时间:2017-08-21 15:47:12

标签: python string pandas dataframe

我有以下string

Hoy
1
5
14
3
0
23

我想把它变成df。

我认为转向list(string)然后pd.Dataframe(list(string))是个好主意,但是当我转到列表时会返回以下输出:

['\n', 'H', 'o', 'y', '\n', '1', '\n', '5', '\n', '1', '4', '\n', '3', '\n', '0', '\n', '2', '3', '\n', '2', ',', '8', '3', '*', '\n']

是否有另一种方法可以将初始字符串转换为像这样的df?:

     0
0   Hoy
1   1
2   5
3   14
4   3
5   0
6   23

2 个答案:

答案 0 :(得分:4)

使用pd.read_csv,将IO缓冲区传递给它:

text = '''Hoy
1
5
14
3
0
23
'''   

pd.read_csv(pd.compat.StringIO(text), header=None)
     0
0  Hoy
1    1
2    5
3   14
4    3
5    0
6   23

答案 1 :(得分:2)

这可以作为接受@ COLDSPEED答案的论据,通过观察这个答案是多么丑陋。

txt = """Hoy
1
5
14
3
0
23"""

(lambda x: pd.Series(pd.to_numeric(x[1:], 'ignore'), name=x[0]))(
    txt.split('\n')
).to_frame()

   Hoy
0    1
1    5
2   14
3    3
4    0
5   23