我正在尝试读取这个小数据文件, 链接-https://drive.google.com/open?id=1nAS5mpxQLVQn9s_aAKvJt8tWPrP_DUiJ
我正在使用代码-
df = pd.read_table('/Data/123451_date.csv', sep=';', index_col=0, engine='python', error_bad_lines=False)
它带有';'作为分隔符,文件中某些观察值(或行)中某些列值的值丢失。
答案 0 :(得分:1)
看来您使用的数据中有些垃圾。准确地说,第1至33行(含)包含其他不必要的(非GPS)信息。您可以通过从数据表中手动删除不需要的信息来修复数据库,也可以使用以下代码段跳过包含该信息的行:
from pandas import read_table
data = read_table('34_2017-02-06.gpx.csv', sep=';', skiprows=list(range(1, 34)).drop("Unnamed: 28", axis=1)
drop("Unnamed: 28", axis=1)
只是用于删除可能由于数据表中每一行以;
结尾的原因而创建的附加列(因为它读取每一行末尾的空白区域为数据)。
print(data.head())
的结果如下:
index cumdist ele ... esttotalpower lat lon
0 49 340 -34.8 ... 9 52.077362 5.114530
1 51 350 -34.8 ... 17 52.077468 5.114543
2 52 360 -35.0 ... -54 52.077521 5.114551
3 53 370 -35.0 ... -173 52.077603 5.114505
4 54 380 -34.8 ... 335 52.077677 5.114387
[5 rows x 28 columns]
要进一步说明drop
命令的作用,这是没有它会发生的情况(请注意最后一列,怪异的列)
index cumdist ele ... lat lon Unnamed: 28
0 49 340 -34.8 ... 52.077362 5.114530 NaN
1 51 350 -34.8 ... 52.077468 5.114543 NaN
2 52 360 -35.0 ... 52.077521 5.114551 NaN
3 53 370 -35.0 ... 52.077603 5.114505 NaN
4 54 380 -34.8 ... 52.077677 5.114387 NaN
[5 rows x 29 columns]