首页 > 解决方案 > 如何用空单元格的情况解析数据

问题描述

我正在尝试从 CSV 文件中解析温度数据,其中有一些无法转换为字符串的空单元格,我正在尝试这样做:

temp = [d for d in data if 75 <= float(d["Temperature(F)"]) <= 100]

但出现“无法将字符串转换为浮点数”错误。以前我只是创建了一个新列表,然后添加了可以转换的列表,但我不能这样做,因为我需要行中的其他信息

给出五行原始数据:

[
    {
        "ID": "A-301",
        "Source": "MapQuest",
        "TMC": "201.0",
        "Severity": "3",
        "Start_Time": "2016-02-19 17:41:00",
        "End_Time": "2016-02-19 21:00:00",
        "Start_Lat": "40.10564",
        "Start_Lng": "-82.949692",
        "End_Lat": "",
        "End_Lng": "",
        "Distance(mi)": "1.28",
        "Description": "Right lane blocked due to accident on I-270 Outerbelt Westbound between Exit 29 OH-3 State St and Exit 27 Cleveland Ave.",
        "Number": "",
        "Street": "Outerbelt W",
        "Side": "R",
        "City": "Columbus",
        "County": "Franklin",
        "State": "OH",
        "Zipcode": "43229",
        "Country": "US",
        "Timezone": "US/Eastern",
        "Airport_Code": "KOSU",
        "Weather_Timestamp": "2016-02-19 17:53:00",
        "Temperature(F)": "57.0",
        "Wind_Chill(F)": "",
        "Humidity(%)": "49.0",
        "Pressure(in)": "29.82",
        "Visibility(mi)": "10.0",
        "Wind_Direction": "SSW",
        "Wind_Speed(mph)": "15.0",
        "Precipitation(in)": "",
        "Weather_Condition": "Clear",
        "Amenity": "False",
        "Bump": "False",
        "Crossing": "False",
        "Give_Way": "False",
        "Junction": "False",
        "No_Exit": "False",
        "Railway": "False",
        "Roundabout": "False",
        "Station": "False",
        "Stop": "False",
        "Traffic_Calming": "False",
        "Traffic_Signal": "False",
        "Turning_Loop": "False",
        "Sunrise_Sunset": "Day",
        "Civil_Twilight": "Day",
        "Nautical_Twilight": "Day",
        "Astronomical_Twilight": "Day"
    },
    {
        "ID": "A-601",
        "Source": "MapQuest",
        "TMC": "201.0",
        "Severity": "2",
        "Start_Time": "2016-03-11 07:28:06",
        "End_Time": "2016-03-11 07:58:06",
        "Start_Lat": "41.403664",
        "Start_Lng": "-82.13942",
        "End_Lat": "",
        "End_Lng": "",
        "Distance(mi)": "0.01",
        "Description": "Accident on OH-2 Eastbound at I-90. Expect delays.",
        "Number": "",
        "Street": "OH-2 W",
        "Side": "R",
        "City": "Elyria",
        "County": "Lorain",
        "State": "OH",
        "Zipcode": "44035",
        "Country": "US",
        "Timezone": "US/Eastern",
        "Airport_Code": "KLPR",
        "Weather_Timestamp": "2016-03-11 07:33:00",
        "Temperature(F)": "37.0",
        "Wind_Chill(F)": "30.4",
        "Humidity(%)": "89.0",
        "Pressure(in)": "30.33",
        "Visibility(mi)": "10.0",
        "Wind_Direction": "NE",
        "Wind_Speed(mph)": "9.2",
        "Precipitation(in)": "",
        "Weather_Condition": "Overcast",
        "Amenity": "False",
        "Bump": "False",
        "Crossing": "False",
        "Give_Way": "False",
        "Junction": "False",
        "No_Exit": "False",
        "Railway": "False",
        "Roundabout": "False",
        "Station": "False",
        "Stop": "False",
        "Traffic_Calming": "False",
        "Traffic_Signal": "False",
        "Turning_Loop": "False",
        "Sunrise_Sunset": "Day",
        "Civil_Twilight": "Day",
        "Nautical_Twilight": "Day",
        "Astronomical_Twilight": "Day"
    },
    {
        "ID": "A-901",
        "Source": "MapQuest",
        "TMC": "201.0",
        "Severity": "2",
        "Start_Time": "2016-06-22 13:42:22",
        "End_Time": "2016-06-22 14:27:22",
        "Start_Lat": "38.588772",
        "Start_Lng": "-121.404259",
        "End_Lat": "",
        "End_Lng": "",
        "Distance(mi)": "0.0",
        "Description": "Accident on Hurley Way at Oak Terrace Ct.",
        "Number": "2437.0",
        "Street": "Hurley Way",
        "Side": "L",
        "City": "Sacramento",
        "County": "Sacramento",
        "State": "CA",
        "Zipcode": "95825-3608",
        "Country": "US",
        "Timezone": "US/Pacific",
        "Airport_Code": "KMCC",
        "Weather_Timestamp": "2016-06-22 13:35:00",
        "Temperature(F)": "89.6",
        "Wind_Chill(F)": "",
        "Humidity(%)": "24.0",
        "Pressure(in)": "29.91",
        "Visibility(mi)": "9.0",
        "Wind_Direction": "SE",
        "Wind_Speed(mph)": "3.5",
        "Precipitation(in)": "",
        "Weather_Condition": "Clear",
        "Amenity": "False",
        "Bump": "False",
        "Crossing": "False",
        "Give_Way": "False",
        "Junction": "False",
        "No_Exit": "False",
        "Railway": "False",
        "Roundabout": "False",
        "Station": "False",
        "Stop": "False",
        "Traffic_Calming": "False",
        "Traffic_Signal": "False",
        "Turning_Loop": "False",
        "Sunrise_Sunset": "Day",
        "Civil_Twilight": "Day",
        "Nautical_Twilight": "Day",
        "Astronomical_Twilight": "Day"
    },
    {
        "ID": "A-1201",
        "Source": "MapQuest",
        "TMC": "201.0",
        "Severity": "2",
        "Start_Time": "2016-06-24 23:38:50",
        "End_Time": "2016-06-25 00:08:50",
        "Start_Lat": "38.004471",
        "Start_Lng": "-122.038849",
        "End_Lat": "",
        "End_Lng": "",
        "Distance(mi)": "0.0",
        "Description": "Accident on CA-4 Eastbound at Exits 15A 15B CA-242. On the median.",
        "Number": "",
        "Street": "CA-4 E",
        "Side": "R",
        "City": "Concord",
        "County": "Contra Costa",
        "State": "CA",
        "Zipcode": "94520",
        "Country": "US",
        "Timezone": "US/Pacific",
        "Airport_Code": "KCCR",
        "Weather_Timestamp": "2016-06-24 23:53:00",
        "Temperature(F)": "70.0",
        "Wind_Chill(F)": "",
        "Humidity(%)": "44.0",
        "Pressure(in)": "29.92",
        "Visibility(mi)": "10.0",
        "Wind_Direction": "Calm",
        "Wind_Speed(mph)": "",
        "Precipitation(in)": "",
        "Weather_Condition": "Clear",
        "Amenity": "False",
        "Bump": "False",
        "Crossing": "False",
        "Give_Way": "False",
        "Junction": "True",
        "No_Exit": "False",
        "Railway": "False",
        "Roundabout": "False",
        "Station": "False",
        "Stop": "False",
        "Traffic_Calming": "False",
        "Traffic_Signal": "False",
        "Turning_Loop": "False",
        "Sunrise_Sunset": "Night",
        "Civil_Twilight": "Night",
        "Nautical_Twilight": "Night",
        "Astronomical_Twilight": "Night"
    }
]

标签: python

解决方案


您可以Temperature(F)使用to_numericfrom pandas 将列转换为数字,并指定您要忽略强制非数值为 null。然后只选择 75 到 100 之间的行。我假设data是 pandas 数据框?

data = pd.DataFrame([ { "ID": "A-301", "Source": "MapQuest", "TMC": "201.0", "Severity": "3", "Start_Time": "2016-02-19 17:41:00", "End_Time": "2016-02-19 21:00:00", "Start_Lat": "40.10564", "Start_Lng": "-82.949692", "End_Lat": "", "End_Lng": "", "Distance(mi)": "1.28", "Description": "Right lane blocked due to accident on I-270 Outerbelt Westbound between Exit 29 OH-3 State St and Exit 27 Cleveland Ave.", "Number": "", "Street": "Outerbelt W", "Side": "R", "City": "Columbus", "County": "Franklin", "State": "OH", "Zipcode": "43229", "Country": "US", "Timezone": "US/Eastern", "Airport_Code": "KOSU", "Weather_Timestamp": "2016-02-19 17:53:00", "Temperature(F)": "57.0", "Wind_Chill(F)": "", "Humidity(%)": "49.0", "Pressure(in)": "29.82", "Visibility(mi)": "10.0", "Wind_Direction": "SSW", "Wind_Speed(mph)": "15.0", "Precipitation(in)": "", "Weather_Condition": "Clear", "Amenity": "False", "Bump": "False", "Crossing": "False", "Give_Way": "False", "Junction": "False", "No_Exit": "False", "Railway": "False", "Roundabout": "False", "Station": "False", "Stop": "False", "Traffic_Calming": "False", "Traffic_Signal": "False", "Turning_Loop": "False", "Sunrise_Sunset": "Day", "Civil_Twilight": "Day", "Nautical_Twilight": "Day", "Astronomical_Twilight": "Day" }, { "ID": "A-601", "Source": "MapQuest", "TMC": "201.0", "Severity": "2", "Start_Time": "2016-03-11 07:28:06", "End_Time": "2016-03-11 07:58:06", "Start_Lat": "41.403664", "Start_Lng": "-82.13942", "End_Lat": "", "End_Lng": "", "Distance(mi)": "0.01", "Description": "Accident on OH-2 Eastbound at I-90. Expect delays.", "Number": "", "Street": "OH-2 W", "Side": "R", "City": "Elyria", "County": "Lorain", "State": "OH", "Zipcode": "44035", "Country": "US", "Timezone": "US/Eastern", "Airport_Code": "KLPR", "Weather_Timestamp": "2016-03-11 07:33:00", "Temperature(F)": "37.0", "Wind_Chill(F)": "30.4", "Humidity(%)": "89.0", "Pressure(in)": "30.33", "Visibility(mi)": "10.0", "Wind_Direction": "NE", "Wind_Speed(mph)": "9.2", "Precipitation(in)": "", "Weather_Condition": "Overcast", "Amenity": "False", "Bump": "False", "Crossing": "False", "Give_Way": "False", "Junction": "False", "No_Exit": "False", "Railway": "False", "Roundabout": "False", "Station": "False", "Stop": "False", "Traffic_Calming": "False", "Traffic_Signal": "False", "Turning_Loop": "False", "Sunrise_Sunset": "Day", "Civil_Twilight": "Day", "Nautical_Twilight": "Day", "Astronomical_Twilight": "Day" }, { "ID": "A-901", "Source": "MapQuest", "TMC": "201.0", "Severity": "2", "Start_Time": "2016-06-22 13:42:22", "End_Time": "2016-06-22 14:27:22", "Start_Lat": "38.588772", "Start_Lng": "-121.404259", "End_Lat": "", "End_Lng": "", "Distance(mi)": "0.0", "Description": "Accident on Hurley Way at Oak Terrace Ct.", "Number": "2437.0", "Street": "Hurley Way", "Side": "L", "City": "Sacramento", "County": "Sacramento", "State": "CA", "Zipcode": "95825-3608", "Country": "US", "Timezone": "US/Pacific", "Airport_Code": "KMCC", "Weather_Timestamp": "2016-06-22 13:35:00", "Temperature(F)": "89.6", "Wind_Chill(F)": "", "Humidity(%)": "24.0", "Pressure(in)": "29.91", "Visibility(mi)": "9.0", "Wind_Direction": "SE", "Wind_Speed(mph)": "3.5", "Precipitation(in)": "", "Weather_Condition": "Clear", "Amenity": "False", "Bump": "False", "Crossing": "False", "Give_Way": "False", "Junction": "False", "No_Exit": "False", "Railway": "False", "Roundabout": "False", "Station": "False", "Stop": "False", "Traffic_Calming": "False", "Traffic_Signal": "False", "Turning_Loop": "False", "Sunrise_Sunset": "Day", "Civil_Twilight": "Day", "Nautical_Twilight": "Day", "Astronomical_Twilight": "Day" }, { "ID": "A-1201", "Source": "MapQuest", "TMC": "201.0", "Severity": "2", "Start_Time": "2016-06-24 23:38:50", "End_Time": "2016-06-25 00:08:50", "Start_Lat": "38.004471", "Start_Lng": "-122.038849", "End_Lat": "", "End_Lng": "", "Distance(mi)": "0.0", "Description": "Accident on CA-4 Eastbound at Exits 15A 15B CA-242. On the median.", "Number": "", "Street": "CA-4 E", "Side": "R", "City": "Concord", "County": "Contra Costa", "State": "CA", "Zipcode": "94520", "Country": "US", "Timezone": "US/Pacific", "Airport_Code": "KCCR", "Weather_Timestamp": "2016-06-24 23:53:00", "Temperature(F)": "70.0", "Wind_Chill(F)": "", "Humidity(%)": "44.0", "Pressure(in)": "29.92", "Visibility(mi)": "10.0", "Wind_Direction": "Calm", "Wind_Speed(mph)": "", "Precipitation(in)": "", "Weather_Condition": "Clear", "Amenity": "False", "Bump": "False", "Crossing": "False", "Give_Way": "False", "Junction": "True", "No_Exit": "False", "Railway": "False", "Roundabout": "False", "Station": "False", "Stop": "False", "Traffic_Calming": "False", "Traffic_Signal": "False", "Turning_Loop": "False", "Sunrise_Sunset": "Night", "Civil_Twilight": "Night", "Nautical_Twilight": "Night", "Astronomical_Twilight": "Night" } ])

temp_to_float = pd.to_numeric(data["Temperature(F)"], errors='coerce')

temp = data.loc[temp_to_float.between(75,100)]

推荐阅读