pandas ValueError: could not convert string to float: (dataframe string 轉 float)(object 轉 float)
問題:pandas 導入 csv文件之后,有部分列是空的,列的類型為object格式,列中單元格存的是string格式
需求:把空的列(object)轉化成浮點類型(float)
方法:
# 找到列名,轉化為列表
col = list(data.columns)
# 把所有列的類型都轉化為數值型,出錯的地方填入NaN,再把NaN的地方補0
data[col] = data[col].apply(pd.to_numeric, errors='coerce').fillna(0.0)
# 至此,object的列(列中存儲的是string類型)轉成了float
# 最后一步,把所有列都轉化成float類型,done!
data = pd.DataFrame(data, dtype='float')
轉化成float后,可以實現數據的篩選了!全部數據3900萬減至3600萬!
注意:以上方法簡單粗暴,將所有的列全部轉化為float類型,會導致日期、車輛號碼的丟失。
建議修改成如下,僅對某些列進行轉化float類型。缺點是對大數據耗時較長(15min)
data['lng'] = data['lng'].apply(pd.to_numeric, errors='coerce').fillna(0.0)
data['lat'] = data['lat'].apply(pd.to_numeric, errors='coerce').fillna(0.0)