Python和Pandas:如何使Pandas的行为类似于numpy.loadtxt?
我有一个这样的表,有12列和几行:Python和Pandas:如何使Pandas的行为类似于numpy.loadtxt?,python,numpy,pandas,Python,Numpy,Pandas,我有一个这样的表,有12列和几行: 1095 20 27595 14.1 106.4 191 1 0 0 0 6.998509 10.22539 1001 32 9958 10.9 -30.6 13 1 0 0
1095 20 27595 14.1 106.4 191 1 0 0 0 6.998509 10.22539
1001 32 9958 10.9 -30.6 13 1 0 0 0 6.908755 9.206132
1122 9 6125.9 23.5 -16.3 14 1 0 0 0 7.022868 8.720281
578 -9 16246 5.9 -25.7 -21 1 0 0 0 6.359574 9.695602
如果我使用numpy.loadtxt
它工作得很好。但是,我想用熊猫。我试过这样的东西
df = pd.read_csv('myFile.txt', sep=" ",header=None)
然而,它不起作用。错误是
pandas.parser.CParserError:标记数据时出错。C错误:第2行预期有90个字段,saw 92
您传递了一个空格作为分隔符,您可以执行sep='\s+'
或更好的操作,但由于txt文件的空格数不同,因此失败
In [61]:
import io
import pandas as pd
pd.read_csv(io.StringIO(t), delim_whitespace=True, header=None)
t="""1095 20 27595 14.1 106.4 191 1 0 0 0 6.998509 10.22539
1001 32 9958 10.9 -30.6 13 1 0 0 0 6.908755 9.206132
1122 9 6125.9 23.5 -16.3 14 1 0 0 0 7.022868 8.720281
578 -9 16246 5.9 -25.7 -21 1 0 0 0 6.359574 9.695602"""
pd.read_csv(io.StringIO(t), delim_whitespace=True, header=None)
Out[61]:
0 1 2 3 4 5 6 7 8 9 10 11
0 1095 20 27595.0 14.1 106.4 191 1 0 0 0 6.998509 10.225390
1 1001 32 9958.0 10.9 -30.6 13 1 0 0 0 6.908755 9.206132
2 1122 9 6125.9 23.5 -16.3 14 1 0 0 0 7.022868 8.720281
3 578 -9 16246.0 5.9 -25.7 -21 1 0 0 0 6.359574 9.695602
或者你可以使用:
尝试df=pd.read\u csv('myFile.txt',delim\u whitespace=True,header=None)
!!(:-)
In [62]:
pd.read_fwf(io.StringIO(t), header=None)
Out[62]:
0 1 2 3 4 5 6 7 8 9 10 11
0 1095 20 27595.0 14.1 106.4 191 1 0 0 0 6.998509 10.225390
1 1001 32 9958.0 10.9 -30.6 13 1 0 0 0 6.908755 9.206132
2 1122 9 6125.9 23.5 -16.3 14 1 0 0 0 7.022868 8.720281
3 578 -9 16246.0 5.9 -25.7 -21 1 0 0 0 6.359574 9.695602