convert string to float in list - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: convert string to float in list (/thread-39390.html) |
convert string to float in list - jacklee26 - Feb-10-2023 HI Do anyone know how to convert element in the list to float, and write them into excel? My code will read a file and write it into excel, attached picture. But I wish to convert the red mark into float, else in excel it will occur exclamation mark. I try many methods using the index and split but still not working. test.txt: Quote:=========================UL========================= My source code: lists = {} current_key = None with open ('test.txt', 'r')as myfile: readline=myfile.read().splitlines() for line in readline: #print(line) if "=" in line: current_key = line.strip("=") lists[current_key] = [] else: assert current_key is not None # there shouldn't be data before a header lists[current_key].append(line) for i in lists["UL"]: i=i.split(' ') UL.append(i) import pandas as pd df1 = pd.DataFrame(UL) df1 = df1.rename(columns=df1.iloc[0]).drop(df1.index[0]) # To Excel with pd.ExcelWriter('out.xlsx', engine='xlsxwriter') as writer: df1.to_excel(writer, 'sheet1', index=False) worksheet = writer.sheets['sheet1'] #worksheet.autofit() worksheet.set_column(1, 3, 25)Itry using below seems not working. Does anyone have any ideas to convert the last two value into float and wiite into excel with out occurring exclamation mark. UL =[] #ULindex= lists["UL"][0] #get header title #UL.append(ULindex) ULrest=lists["UL"][1:] ULindex= lists["UL"][0] #print(ULindex) #for i in lists["UL"]: for i in ULrest: datetime=value=i.split(' ')[0] #print(datetime) value=i.split(' ')[1:-1] UL.append(datetime) for ii in value: UL.append(float(ii)) print(UL) RE: convert string to float in list - noisefloor - Feb-10-2023 Hi, Pandas supports changing the dtype of a column, called "casting". See documentation for details. Regards, noisefloor RE: convert string to float in list - snippsat - Feb-10-2023 You most chek DataFrame with dtypes (always check this) to see what types are now.Should not loop and try to change manually when work in Pandas,as noisefloor mentiom there are functions for this. Example. import pandas as pd import numpy as np dates = pd.date_range('2023-01-01', periods=5, freq='D') df = pd.DataFrame({ 'date': dates, 'column_1': np.random.randn(5), 'column_2': np.random.randint(0,5, size=(1, 5))[0] }) >>> df date column_1 column_2 0 2023-01-01 0.151729 1 1 2023-01-02 0.201814 3 2 2023-01-03 1.167231 3 3 2023-01-04 -1.701339 1 4 2023-01-05 -0.147010 1 # Check types >>> df.dtypes date datetime64[ns] column_1 float64 column_2 int32 dtype: object # Convert column 2 to float >>> df['column_2'] = df['column_2'].astype(float) # Check types >>> df.dtypes date datetime64[ns] column_1 float64 column_2 float64 dtype: object # Write to Excel df.to_excel('out1.xlsx', index=False) RE: convert string to float in list - jacklee26 - Feb-11-2023 I saw my dtypes are object. IS there any method to change column 2 and 3 to float. if there're any better methods or suggestions for this code please recommend them. I know this code is not pretty efficient. RE: convert string to float in list - noisefloor - Feb-11-2023 Hi, Quote:IS there any method to change column 2 and 3 to float.Did you read the answer we gave you? A link to the Pandas documentation AND an example were given. Now it's your turn. If you have problems understanding what to do, please explain and show your code, even if is doesn't work. Regards, noisefloor RE: convert string to float in list - snippsat - Feb-11-2023 (Feb-11-2023, 01:48 AM)jacklee26 Wrote: I saw my dtypes are object. IS there any method to change column 2 and 3 to float.I have already show you how to do this🧐 Now are all object which is a string type(but can technically contain any Python object).df['your_column_name'] = df['your_column_name'].astype(float)Most also change datettime column to correct type. # Convert the "datettime" column to datetime64 dtype df["datettime"] = pd.to_datetime(df["datettime"] RE: convert string to float in list - jacklee26 - Feb-13-2023 ok Thanks all, I solve it by adding this import pandas as pd #uplink df1 = pd.DataFrame(UL) df1 = df1.rename(columns=df1.iloc[0]).drop(df1.index[0]) df1['ingress-traffic'] = df1['ingress-traffic'].astype(float) df1['egress-traffic'] = df1['egress-traffic'].astype(float) |