I’m trying to save some data that I collected on a csv file.
And for that I’m using the following code, but I’m getting the error:
‘str’ object has no attribute ‘to_csv’
I am using this line df = pd.to_numeric(df, errors=’ignore’) to change Nonetype to numeric type. is this the correct method?
import pandas as pd import numpy as np df = pd.read_csv("D:data_ana\2022.07.27_at_10.00.33.csv") index = 5 cols_in_the_slice = df.loc[ :, ( f"Objects[{index}].General.u_MeasuredTimeStamp", f"Objects[{index}].General.u_LifeCycles", f"Objects[{index}].KinematicRel.f_DistX", f"Objects[{index}].KinematicRel.f_DistY", f"Objects[{index}].KinematicRel.f_VrelX", ), ].columns other_cols = pd.Index(["TimeStamp", "Velocity", "Accel", "YawRate"]) all_cols = other_cols.union(cols_in_the_slice, sort=False) df = df[all_cols] df.rename( columns={ f"Objects[{index}].General.u_MeasuredTimeStamp": "Obj_TimeStamp", f"Objects[{index}].General.u_LifeCycles": "Age", f"Objects[{index}].KinematicRel.f_DistX": "K_DistX", f"Objects[{index}].KinematicRel.f_DistY": "K_DistY", f"Objects[{index}].KinematicRel.f_VrelX": "K_VrelX", f"Objects[{index}].KinematicRel.f_VrelY": "K_VrelY", }, inplace=True, ) df = str(round(df, 2)) df = pd.to_numeric(df, errors="ignore") df = df.to_csv(r"D:data_anaduplicate_2022.07.27_at_10.00.33.csv")
Advertisement
Answer
The issue isn’t (only) in pd.to_numeric()
; right before that you’re str()
ing the df and assigning to df
, so at that point you have no dataframe left, just a string describing it.
Additionally, you can’t use to_numeric
like that.
If you want to convert everything in the df to numbers, you can use astype
.
Furthermore, to_csv
doesn’t return the dataframe.
df.rename(...) df.astype(float, copy=False, errors='ignore') df.to_csv(r'D:data_anaduplicate_2022.07.27_at_10.00.33.csv')
You can also simplify things by just telling to_csv
which columns to write:
import pandas as pd df = pd.read_csv(r"D:data_ana2022.07.27_at_10.00.33.csv") index = 5 df.rename( columns={ f"Objects[{index}].General.u_MeasuredTimeStamp": "Obj_TimeStamp", f"Objects[{index}].General.u_LifeCycles": "Age", f"Objects[{index}].KinematicRel.f_DistX": "K_DistX", f"Objects[{index}].KinematicRel.f_DistY": "K_DistY", f"Objects[{index}].KinematicRel.f_VrelX": "K_VrelX", f"Objects[{index}].KinematicRel.f_VrelY": "K_VrelY", }, inplace=True, ) df.astype(float, copy=False, errors="ignore") cols_to_write = [ "TimeStamp", "Velocity", "Accel", "YawRate", "Obj_TimeStamp", "Age", "K_DistX", "K_DistY", "K_VrelX", "K_VrelY", ] df = df.to_csv(r"D:data_anaduplicate_2022.07.27_at_10.00.33.csv", columns=cols_to_write)