I am reading from a data file that has 8 precision, then after interpolating some values I am saving them like where the float_format option is not working,
df.to_csv('data.dat',sep=' ', index=False, header=False, float_format="%.8f")
and the result file looks like
0.02506602 0.05754493 0.36854688
0.02461631 0.0599653 0.43078098
0.02502534 0.06209149 0.44955311
0.4267356675182389 0.1718682822340447 0.5391386354945895
0.426701667727433 0.17191008887193007 0.5391897818631616
0.4266676661681287 0.17195189807522643 0.5392409104354972
The first 3 lines were in data file and next 3 are the new interpolated values. I want all the values to be of same length. Whats going wrong here and how do I fix it?
Also: It would be nice if I can control the float precision differently for different columns.
Pandas DataFrame to_csv() function converts DataFrame into CSV data. We can pass a file object to write the CSV data into a file. Otherwise, the CSV data is returned in the string format.
to_csv() function to convert the given Series object into a comma separated format. # convert to comma-separated. sr.to_csv() Output : As we can see in the output, the Series.
By using pandas. DataFrame. to_csv() method you can write/save/export a pandas DataFrame to CSV File. By default to_csv() method export DataFrame to a CSV file with comma delimiter and row index as the first column.
Your code looks fine. Most likely, there is an issue with your input data. Use pd.DataFrame.dtypes
to check all your input series are of type float
. If they aren't convert to float
via:
df[col_list] = df[col_list].apply(pd.to_numeric, downcast='float').fillna(0)
Here's a working example:
from io import StringIO
import pandas as pd
mystr = StringIO("""0.02506602 0.05754493 0.36854688
0.02461631 0.0599653 0.43078098
0.02502534 0.06209149 0.44955311
0.4267356675182389 0.1718682822340447 0.5391386354945895
0.426701667727433 0.17191008887193007 0.5391897818631616
0.4266676661681287 0.17195189807522643 0.5392409104354972""")
df = pd.read_csv(mystr, delim_whitespace=True, header=None)
print(df.dtypes)
# 0 float64
# 1 float64
# 2 float64
# dtype: object
file_loc = r'C:\temp\test.dat'
df.to_csv(file_loc, sep=' ', index=False, header=False, float_format="%.8f")
df = pd.read_csv(file_loc, delim_whitespace=True, header=None)
print(df[0].iloc[-1])
# 0.42666767
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With