Skip to content

Commit ee78805

Browse files
authored
Merge pull request #209 from opensource9ja/fix/col-slicing
Fixes #203 bug in column slicing index generation
2 parents 5285e4f + aaeadd2 commit ee78805

File tree

4 files changed

+161
-147
lines changed

4 files changed

+161
-147
lines changed

danfojs-browser/src/core/indexing.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,26 @@ export const indexLoc = (ndframe, kwargs) => {
2020
//console.log("here", kwargs["rows"].length)
2121
if (kwargs["rows"][0].includes(":")) {
2222

23-
let row_split = kwargs["rows"][0].split(":");
23+
let column_split = kwargs["rows"][0].split(":");
2424

2525
if (kwargs['type'] == 'loc') {
2626
//get index of first and last occurence of label
2727
let start, end;
28-
if (isNaN(Number(row_split[0]))) {
29-
start = ndframe.index.indexOf(row_split[0]);
28+
if (isNaN(Number(column_split[0]))) {
29+
start = ndframe.index.indexOf(column_split[0]);
3030
} else {
31-
start = Number(row_split[0]);
31+
start = Number(column_split[0]);
3232
}
3333

34-
if (isNaN(Number(row_split[1]))) {
35-
end = ndframe.index.lastIndexOf(row_split[1]) - 1 || (ndframe.values.length - 1);
34+
if (isNaN(Number(column_split[1]))) {
35+
end = ndframe.index.lastIndexOf(column_split[1]) - 1 || (ndframe.values.length - 1);
3636
} else {
37-
end = Number(row_split[1]) - 1 || (ndframe.values.length - 1);
37+
end = Number(column_split[1]) - 1 || (ndframe.values.length - 1);
3838
}
3939
rows = utils.__range(start, end);
4040
} else {
41-
let start = parseInt(row_split[0]) || 0;
42-
let end = parseInt(row_split[1]) - 1 || (ndframe.values.length - 1);
41+
let start = parseInt(column_split[0]) || 0;
42+
let end = parseInt(column_split[1]) - 1 || (ndframe.values.length - 1);
4343

4444
if (typeof start == "number" && typeof end == "number") {
4545
rows = utils.__range(start, end);
@@ -90,16 +90,16 @@ export const indexLoc = (ndframe, kwargs) => {
9090
if (Array.isArray(kwargs["columns"])) {
9191
if (kwargs["columns"].length == 1 && kwargs["columns"][0].includes(":")) {
9292

93-
let row_split = kwargs["columns"][0].split(":");
93+
let column_split = kwargs["columns"][0].split(":");
9494
let start, end;
9595

96-
if (kwargs["type"] == "iloc" || (row_split[0] == "")) {
97-
start = parseInt(row_split[0]) || 0;
98-
end = parseInt(row_split[1]) - 1 || (ndframe.values[0].length - 1);
96+
if (kwargs["type"] == "iloc" || (column_split[0] == "")) {
97+
start = parseInt(column_split[0]) || 0;
98+
end = parseInt(column_split[1]) - 1 === 0 ? 0 : parseInt(column_split[1]) - 1;
9999
} else {
100100

101-
start = parseInt(ndframe.columns.indexOf(row_split[0]));
102-
end = parseInt(ndframe.columns.indexOf(row_split[1])) - 1;
101+
start = parseInt(ndframe.columns.indexOf(column_split[0]));
102+
end = parseInt(ndframe.columns.indexOf(column_split[1])) - 1;
103103
}
104104

105105

danfojs-node/dist/core/indexing.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,27 @@ const indexLoc = (ndframe, kwargs) => {
1818
if (Array.isArray(kwargs["rows"])) {
1919
if (kwargs["rows"].length == 1 && typeof kwargs["rows"][0] == "string") {
2020
if (kwargs["rows"][0].includes(":")) {
21-
let row_split = kwargs["rows"][0].split(":");
21+
let column_split = kwargs["rows"][0].split(":");
2222

2323
if (kwargs['type'] == 'loc') {
2424
let start, end;
2525

26-
if (isNaN(Number(row_split[0]))) {
27-
start = ndframe.index.indexOf(row_split[0]);
26+
if (isNaN(Number(column_split[0]))) {
27+
start = ndframe.index.indexOf(column_split[0]);
2828
} else {
29-
start = Number(row_split[0]);
29+
start = Number(column_split[0]);
3030
}
3131

32-
if (isNaN(Number(row_split[1]))) {
33-
end = ndframe.index.lastIndexOf(row_split[1]) - 1 || ndframe.values.length - 1;
32+
if (isNaN(Number(column_split[1]))) {
33+
end = ndframe.index.lastIndexOf(column_split[1]) - 1 || ndframe.values.length - 1;
3434
} else {
35-
end = Number(row_split[1]) - 1 || ndframe.values.length - 1;
35+
end = Number(column_split[1]) - 1 || ndframe.values.length - 1;
3636
}
3737

3838
rows = utils.__range(start, end);
3939
} else {
40-
let start = parseInt(row_split[0]) || 0;
41-
let end = parseInt(row_split[1]) - 1 || ndframe.values.length - 1;
40+
let start = parseInt(column_split[0]) || 0;
41+
let end = parseInt(column_split[1]) - 1 || ndframe.values.length - 1;
4242

4343
if (typeof start == "number" && typeof end == "number") {
4444
rows = utils.__range(start, end);
@@ -84,15 +84,16 @@ const indexLoc = (ndframe, kwargs) => {
8484
if (Object.prototype.hasOwnProperty.call(kwargs, "columns")) {
8585
if (Array.isArray(kwargs["columns"])) {
8686
if (kwargs["columns"].length == 1 && kwargs["columns"][0].includes(":")) {
87-
let row_split = kwargs["columns"][0].split(":");
87+
let column_split = kwargs["columns"][0].split(":");
8888
let start, end;
8989

90-
if (kwargs["type"] == "iloc" || row_split[0] == "") {
91-
start = parseInt(row_split[0]) || 0;
92-
end = parseInt(row_split[1]) - 1 || ndframe.values[0].length - 1;
90+
if (kwargs["type"] == "iloc" || column_split[0] == "") {
91+
start = parseInt(column_split[0]) || 0;
92+
end = parseInt(column_split[1]) - 1 === 0 ? 0 : parseInt(column_split[1]) - 1;
93+
console.log(start, end);
9394
} else {
94-
start = parseInt(ndframe.columns.indexOf(row_split[0]));
95-
end = parseInt(ndframe.columns.indexOf(row_split[1])) - 1;
95+
start = parseInt(ndframe.columns.indexOf(column_split[0]));
96+
end = parseInt(ndframe.columns.indexOf(column_split[1])) - 1;
9697
}
9798

9899
if (typeof start == "number" && typeof end == "number") {

danfojs-node/src/core/indexing.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,26 @@ export const indexLoc = (ndframe, kwargs) => {
2020
//console.log("here", kwargs["rows"].length)
2121
if (kwargs["rows"][0].includes(":")) {
2222

23-
let row_split = kwargs["rows"][0].split(":");
23+
let column_split = kwargs["rows"][0].split(":");
2424

2525
if (kwargs['type'] == 'loc') {
2626
//get index of first and last occurence of label
2727
let start, end;
28-
if (isNaN(Number(row_split[0]))) {
29-
start = ndframe.index.indexOf(row_split[0]);
28+
if (isNaN(Number(column_split[0]))) {
29+
start = ndframe.index.indexOf(column_split[0]);
3030
} else {
31-
start = Number(row_split[0]);
31+
start = Number(column_split[0]);
3232
}
3333

34-
if (isNaN(Number(row_split[1]))) {
35-
end = ndframe.index.lastIndexOf(row_split[1]) - 1 || (ndframe.values.length - 1);
34+
if (isNaN(Number(column_split[1]))) {
35+
end = ndframe.index.lastIndexOf(column_split[1]) - 1 || (ndframe.values.length - 1);
3636
} else {
37-
end = Number(row_split[1]) - 1 || (ndframe.values.length - 1);
37+
end = Number(column_split[1]) - 1 || (ndframe.values.length - 1);
3838
}
3939
rows = utils.__range(start, end);
4040
} else {
41-
let start = parseInt(row_split[0]) || 0;
42-
let end = parseInt(row_split[1]) - 1 || (ndframe.values.length - 1);
41+
let start = parseInt(column_split[0]) || 0;
42+
let end = parseInt(column_split[1]) - 1 || (ndframe.values.length - 1);
4343

4444
if (typeof start == "number" && typeof end == "number") {
4545
rows = utils.__range(start, end);
@@ -90,16 +90,17 @@ export const indexLoc = (ndframe, kwargs) => {
9090
if (Array.isArray(kwargs["columns"])) {
9191
if (kwargs["columns"].length == 1 && kwargs["columns"][0].includes(":")) {
9292

93-
let row_split = kwargs["columns"][0].split(":");
93+
let column_split = kwargs["columns"][0].split(":");
9494
let start, end;
9595

96-
if (kwargs["type"] == "iloc" || (row_split[0] == "")) {
97-
start = parseInt(row_split[0]) || 0;
98-
end = parseInt(row_split[1]) - 1 || (ndframe.values[0].length - 1);
96+
if (kwargs["type"] == "iloc" || (column_split[0] == "")) {
97+
start = parseInt(column_split[0]) || 0;
98+
end = parseInt(column_split[1]) - 1 === 0 ? 0 : parseInt(column_split[1]) - 1;
99+
console.log(start, end);
99100
} else {
100101

101-
start = parseInt(ndframe.columns.indexOf(row_split[0]));
102-
end = parseInt(ndframe.columns.indexOf(row_split[1])) - 1;
102+
start = parseInt(ndframe.columns.indexOf(column_split[0]));
103+
end = parseInt(ndframe.columns.indexOf(column_split[1])) - 1;
103104
}
104105

105106

0 commit comments

Comments
 (0)