读取观测值中具有不相等列的熊猫数据框

时间:2019-01-19 14:08:23

标签: python pandas csv

我正在尝试读取这个小数据文件, 链接-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)

它带有';'作为分隔符,文件中某些观察值(或行)中某些列值的值丢失。

如何正确阅读。我看到了当前数据帧,它没有正确加载。 enter image description here

enter image description here

1 个答案:

答案 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]