python - 如何用空单元格的情况解析数据
问题描述
我正在尝试从 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"
}
]
解决方案
您可以Temperature(F)
使用to_numeric
from 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)]
推荐阅读
- jquery - 如何从jquery中共享同一类的元素集中定位特定元素?
- pdf - 如果 PDF 文件是第一代文档,我们如何检查 uipath?
- flutter - 限制用户使用 Flutter 从图库或相机中选择大于 1 MB 的图像
- python - Python Selenium 错误 selenium.common.exceptions.ElementClickInterceptedException
- java - Spring Cloud Dataflow server Custom Build 2.6.1
- c - skb 中的端口信息与 tcpdump 的不匹配
- javascript - 为什么 Symbol.iterator 只返回 value 属性而不是返回 done 和 value 属性
- html - 在 JS 变量中使用 HTML 标签(反应)
- microsoft-teams - 如何在 Microsoft Team App 清单中添加图像轮播?
- php - 在电子商务购物车的 URL 中传递多个 PHP 变量?