Newer
Older
from GEODE.signal import curry
from numpy import vectorize
import pandas
@curry
def toStrKey(areParagraphs, row):
key = "{work}_{volume:02d}_{article:04d}"
if areParagraphs:
key += "_{paragraph:04d}"
return key.format(**row)
def forPanda(data, f):
return vectorize(lambda i: f(data.iloc[i]))
def toTSV(filePath, data, sortBy='toStrKey'):
if type(data) != pandas.DataFrame:
data = pandas.DataFrame(data)
if sortBy == 'toStrKey':
sortBy = toStrKey('paragraph' in data)
if sortBy is None:
sortedData = data
else:
sortedData = data.sort_index(key=forPanda(data, sortBy))
sortedData.to_csv(filePath, sep='\t', index=False)
def fromTSV(filePath):
return pandas.read_csv(filePath, sep='\t')