我正在使用python pandas分析txt数据
我试图用pd.read_fwf读取txt文件,但只有一列只有一个?信如下
824334 4141.854 6100.175 11.040 -117.810
841013 2028.294 6221.566 10.913 -178.340
854890 4214.858 6322.255 10.645 -125.390
864353 4326.768 6389.329 10.815 -98.650 ?
864918 3187.398 6392.824 11.050 -91.250
867194 3230.288 6410.404 10.208 -190.380
1794 2926.630 8.900 18.564 -58.970
3041 2902.000 18.400 16.302 -63.770
3171 2912.040 19.660 12.905 -110.350
当使用熊猫读取此文件时
import pandas as pd
data = pd.read_fwf(file, dtype=None, header=None)
输出是
0 1 2 3 4
0 824334 4141.854 6100.175 11.040 -117.810
1 841013 2028.294 6221.566 10.913 -178.340
2 854890 4214.858 6322.255 10.645 -125.390
3 864353 4326.768 6389.329 10.815 -98.650
4 864918 3187.398 6392.824 11.050 -91.250
5 867194 3230.288 6410.404 10.208 -190.380
6 1794 2926.630 8.900 18.564 -58.970
7 3041 2902.000 18.400 16.302 -63.770
8 3171 2912.040 19.660 12.905 -110.350
缺少最后一列
如果使用read_csv,则会导致错误,因为有?关于最后一栏的信
然而,一些文件二?最后一列上的字母,则最后一列存在,并用NaN填充所有空单元格
我想知道为什么一个字母会被自动忽略
请给我一些关于这个问题的建议
致以最良好的祝愿
正如@jesrael在评论中所说的,最干净的方法是在使用
read_fwf
之前知道列数,并将其与names
参数一起使用正如我在评论中所说的,你在我的机器上发布的内容是有效的。那么,也许还有别的东西要检查
无论如何,如果列的数量因文件而异,您可以在使用
read_fwf
之前读取每个文件,以获得这样的列数(虽然不是很有效,但它可以完成这项工作):和使用:
或者,将read_csv与
delim_whitespace=True
和names
一起使用:如果我们不将
names
给read_csv
,将出现错误(pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 4, saw 6
),因为列数是从第一行推断出来的,而在导致问题的文本文件中,最后一列中没有数据相关问题 更多 >
编程相关推荐