Python 将多行字符串转换为数据帧
我有以下Python 将多行字符串转换为数据帧,python,string,pandas,dataframe,Python,String,Pandas,Dataframe,我有以下字符串: Hoy 1 5 14 3 0 23 我想把它变成df 我认为最好先转到list(string),然后再转到pd.Dataframe(list(string)),但是当我转到list时,返回以下输出: ['\n', 'H', 'o', 'y', '\n', '1', '\n', '5', '\n', '1', '4', '\n', '3', '\n', '0', '\n', '2', '3', '\n', '2', ',', '8', '3', '*', '\n'] 有没有其
字符串
:
Hoy
1
5
14
3
0
23
我想把它变成df
我认为最好先转到list(string)
,然后再转到pd.Dataframe(list(string))
,但是当我转到list时,返回以下输出:
['\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
使用
pd.read\u csv
,将IO缓冲区传递给它:
from up import StringIO
text = '''Hoy
1
5
14
3
0
23
'''
pd.read_csv(StringIO(text), header=None)
0
0 Hoy
1 1
2 5
3 14
4 3
5 0
6 23
这应该作为接受@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
哦,我的。。。太难看了因为
StringIO
不再在pd.compat中,所以这项技术将在2020年起作用