This How-To shows how to read a CSV-file with multiple tables separated by a new line (as generated by Engauge ) into a list of ‘ Pandas Series’.
import pandas as pd
import numpy as np
import pdb
def read_engauge_csv(fileName):
"""Reads a CSV file with multiple arrays stored by Engauge.
Returns a list of series with names, x and y given by Engauge curves."""
with open (fileName, "r") as dataFile:
dataStrings = dataFile.read()
dataStrings = dataStrings.replace('\n\n', "BREAK")
dataStrings = dataStrings.replace('\n',',')
dataStrings = dataStrings.split("BREAK")
# Remove the "," put by Engauge at the end of the last line.
dataStrings[-1] = dataStrings[-1].rstrip(',')
dataSeries = []
for dataString in dataStrings:
dataList = dataString.split(",")
dataName = dataList[1]
data = np.array(dataList[2:])
data = data.astype(np.float64)
data = data.reshape(-1,2) # Reshape to pairs
dataSeries.append(pd.Series(data[:,1],index=data[:,0],name=dataName))
return dataSeries