我认为数据清理存在小问题。包含在CSV文件enter link to CSV中。有人在第7行的“ length ft”列中添加了逗号。我指出了图片上的位置。 enter image description here
df=pd.read_csv('c:/2/runways.csv', error_bad_lines = True)
print(df)
df=pd.read_csv('c:/2/runways.csv', thousands=',')
print(df)
df=pd.read_csv('c:/2/runways.csv', decimal = ',')
上述我知道的说明无效。 数据清理方法对我来说至关重要。 请帮我。 每个帮助都会被授予(当我的声誉超过15时。)
答案 0 :(得分:2)
我并没有太靠近数据文件,但是它似乎遵循一种非常简单的模式:#,#,"cccc",#,#...
(其中#
是一个数字,c
是一个字母数字字符)。
该模式可以很容易地转换为正则表达式模式,例如:^(\d+,\d+,"[\dA-Z]{4}",)(\d+),(\d{3},\d+)
此RegEx模式将检测“ airport_ident”和“ surface”字段之间包含3组逗号分隔数字的行,更重要的是,则只有当该组的第二个数字正好为3位数字长时,它才会匹配,因为这表明该逗号应用作千位分隔符。
由于分组,您可以利用向后引用替换成千上万的分隔符。例如,在Atom(文本编辑器)中弄乱了它,我使用了$1$2$3
的RegEx替换模式,因为千位分隔符逗号不在第二和第三捕获组之内。在python中,就像
import re
raw_lines = ""
with open('/path/to/file', 'r') as fh:
raw_lines = fh.read()
cleaned_lines = re.sub(
r'^(\d+,\d+,"[\dA-Z]{4}",)(\d+),(\d{3},\d+)',
r'\1\2\3',
raw_lines,
re.IGNORECASE
)
这就是说,正如his answer中报道的用尽情况一样,当我在文本编辑器中打开CSV文件时,我没有看到任何有问题的行。
答案 1 :(得分:1)
我在excel中打开了您的csv文件,而excel引擎似乎已处理了逗号。我在length_ft列中显示1700。当我将此文件另存为xlsx而不是csv,然后使用pd.read_excel('runways.xlsx')时,文件似乎可以正确打开。 Excel版本是Office 2010 Professional plus。
id airport_ref airport_ident length_ft width_ft surface lighted closed le_ident le_latitude_deg le_longitude_deg le_elevation_ft le_heading_degT le_displaced_threshold_ft he_ident he_latitude_deg he_longitude_deg he_elevation_ft he_heading_degT he_displaced_threshold_ft
0 269408 6523 00A 80.0 80.0 ASPH-G 1 0 H1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 255155 6524 00AK 2500.0 70.0 GRVL 0 0 N NaN NaN NaN NaN NaN S NaN NaN NaN NaN NaN
2 254165 6525 00AL 2300.0 200.0 TURF 0 0 1 NaN NaN NaN NaN NaN 19 NaN NaN NaN NaN NaN
3 270932 6526 00AR 40.0 40.0 GRASS 0 0 H1 NaN NaN NaN NaN NaN H1 NaN NaN NaN NaN NaN
4 322128 322127 00AS 1450.0 60.0 Turf 0 0 1 NaN NaN NaN NaN NaN 19 NaN NaN NaN NaN NaN
5 257681 6527 00AZ 1700.0 60.0 GRAVEL 0 0 15 NaN NaN NaN NaN NaN 33 NaN NaN NaN NaN NaN
6 245528 6528 00CA 6000.0 80.0 ASPH 0 0 4 35.3493 -116.8930 NaN 50.0 NaN 22 35.3603 -116.8780 NaN NaN NaN
7 250597 6529 00CO 3900.0 20.0 TURF-G 0 0