pandas-js
Version:
Pandas for JavaScript
198 lines (155 loc) • 5.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generateCumulativeFunc = exports.OP_CUMMIN = exports.OP_CUMMAX = exports.OP_CUMMUL = exports.OP_CUMSUM = exports.round10 = exports.parseIndex = exports.intersectingColumns = exports.nonMergeColumns = exports.sum = undefined;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
exports.enumerate = enumerate;
var _immutable = require('immutable');
var _immutable2 = _interopRequireDefault(_immutable);
var _exceptions = require('./exceptions');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _marked = [enumerate].map(_regenerator2.default.mark);
var sum = exports.sum = function sum(iterable) {
return iterable.reduce(function (s, v) {
return s + v;
}, 0);
};
function enumerate(iterable) {
var i, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, x;
return _regenerator2.default.wrap(function enumerate$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
i = 0;
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
_context.prev = 4;
_iterator = iterable[Symbol.iterator]();
case 6:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
_context.next = 14;
break;
}
x = _step.value;
_context.next = 10;
return [x, i];
case 10:
i += 1;
case 11:
_iteratorNormalCompletion = true;
_context.next = 6;
break;
case 14:
_context.next = 20;
break;
case 16:
_context.prev = 16;
_context.t0 = _context['catch'](4);
_didIteratorError = true;
_iteratorError = _context.t0;
case 20:
_context.prev = 20;
_context.prev = 21;
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
case 23:
_context.prev = 23;
if (!_didIteratorError) {
_context.next = 26;
break;
}
throw _iteratorError;
case 26:
return _context.finish(23);
case 27:
return _context.finish(20);
case 28:
case 'end':
return _context.stop();
}
}
}, _marked[0], this, [[4, 16, 20, 28], [21,, 23, 27]]);
}
var nonMergeColumns = exports.nonMergeColumns = function nonMergeColumns(columns, on) {
return columns.filter(function (k) {
return on.indexOf(k) < 0;
});
};
var intersectingColumns = exports.intersectingColumns = function intersectingColumns(cols1, cols2) {
return cols1.filter(function (k) {
return cols2.indexOf(k) >= 0;
});
};
var parseIndex = exports.parseIndex = function parseIndex(index, values) {
if (Array.isArray(index)) {
if (values.size !== index.length) throw new _exceptions.IndexMismatchError('values size not equal to index size');
return _immutable2.default.List(index);
} else if (index instanceof _immutable2.default.List) {
if (values.size !== index.size) throw new _exceptions.IndexMismatchError('values size not equal to index size');
return index;
} else if (typeof index !== 'undefined') {
if (values.size !== 1) throw new _exceptions.IndexMismatchError();
return _immutable2.default.List([index]);
} else if (typeof index === 'undefined') {
return _immutable2.default.Range(0, values.size).toList();
} else {
throw new _exceptions.IndexMismatchError();
}
};
var decimalAdjust = function decimalAdjust(type, value, exp) {
if (typeof exp === 'undefined' || +exp === 0) {
return Math[type](value);
}
value = +value;
exp = +exp;
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
return NaN;
}
value = value.toString().split('e');
value = Math[type](+(value[0] + 'e' + (value[1] ? +value[1] - exp : -exp)));
value = value.toString().split('e');
return +(value[0] + 'e' + (value[1] ? +value[1] + exp : exp));
};
var round10 = exports.round10 = function round10(value, exp) {
return decimalAdjust('round', value, exp);
};
var OP_CUMSUM = exports.OP_CUMSUM = 'OP_CUMSUM';
var OP_CUMMUL = exports.OP_CUMMUL = 'OP_CUMMUL';
var OP_CUMMAX = exports.OP_CUMMAX = 'OP_CUMMAX';
var OP_CUMMIN = exports.OP_CUMMIN = 'OP_CUMMIN';
var generateCumulativeFunc = exports.generateCumulativeFunc = function generateCumulativeFunc(operation) {
switch (operation) {
case OP_CUMSUM:
return function (values) {
var agg = 0;return values.map(function (v) {
agg += v;return agg;
});
};
case OP_CUMMUL:
return function (values) {
var agg = 1;return values.map(function (v) {
agg *= v;return agg;
});
};
case OP_CUMMAX:
return function (values) {
var maxVal = Number.NEGATIVE_INFINITY;
return values.map(function (v) {
maxVal = Math.max(maxVal, v);return maxVal;
});
};
case OP_CUMMIN:
return function (values) {
var minVal = Number.POSITIVE_INFINITY;
return values.map(function (v) {
minVal = Math.min(minVal, v);return minVal;
});
};
default:
throw new Error('Not implemented for ' + operation);
}
};