pythonpandastext-fileslineterminator

Lineterminator giving extra row using pandas


I think I have a problem using line terminator when reading data from a text file using pandas. It gives an unneeded row at the end of the column of NaN. My data has 12 rows plus a header but using the code provided it produces 13rows plus a header. How can I get it to output the correct data.

Data was written to text file using

with open(filepath, 'a', newline='') as filey: 
    csv_writer = csv.writer(filey, delimiter = '\t', lineterminator='\r\n')

Code

import pandas as pd


path_to_results = r"C:\\...\\Desktop\\Results\\_results.txt"
data = pd.read_csv(path_to_results,sep='\t',lineterminator='\r')
data = pd.DataFrame(data)

#print(data.head())
print(data["Vi_V"])
print(data["mass_g"])

using Lineterminator \r :

Name: Vi_V, dtype: object
0     0.24
1     0.47
...
11    3.66
12     NaN

using Lineterminator \r\n :

Traceback (most recent call last):

  File "c:/Users.../g_00.py", line 5, in <module>
    data = pd.read_csv(path_to_results,sep='\t',lineterminator='\r\n')
  File "C:...\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:...\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:...\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
    self._make_engine(self.engine)
  File "C:...\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:...\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 395, in pandas._libs.parsers.TextReader.__cinit__
ValueError: Only length-1 line terminators supported

Solution

  • dee cue gave the answer in a comment: "Have you tried leaving out the line terminator parameter? Try to see if python on Windows automatically reads new line as \r\n. – dee cue Oct 12 at 10:01" It worked.