Skip to content

Commit ec1b16d

Browse files
committed
Minor bug fixes
1 parent a5ba784 commit ec1b16d

File tree

6 files changed

+48
-11
lines changed

6 files changed

+48
-11
lines changed

danfojs-browser/src/core/frame.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,7 +1237,7 @@ export default class DataFrame extends NDframe {
12371237
const dfValues = this.values;
12381238
for (let i = 0; i < dfValues.length; i++) {
12391239
const values = dfValues[i];
1240-
if (!values.includes(NaN)) {
1240+
if (!values.includes(NaN) && !values.includes(undefined) && !values.includes(null)) {
12411241
newData.push(values);
12421242
newIndex.push(this.index[i]);
12431243
}
@@ -2100,8 +2100,9 @@ export default class DataFrame extends NDframe {
21002100
});
21012101

21022102
const sortedObjectArr = utils.sortObj(objToSort, ascending);
2103-
const sortedIndex = sortedObjectArr.map((obj) => obj.index);
2103+
let sortedIndex = sortedObjectArr.map((obj) => obj.index);
21042104
const newData = sortedIndex.map((i) => (this.values)[i]);
2105+
sortedIndex = sortedIndex.map((i) => index[i]);
21052106

21062107
if (inplace) {
21072108
this.$setValues(newData);

danfojs-browser/src/core/series.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,9 +789,10 @@ export default class Series extends NDframe {
789789
if (inplace) {
790790
this.$setValues(data);
791791
} else {
792-
const sf = this.copy();
793-
sf.$setValues(data);
794-
return sf;
792+
return new Series(data, {
793+
index: this.index,
794+
config: { ...this.config }
795+
});
795796
}
796797
}
797798

danfojs-browser/tests/core/frame.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,6 +2047,17 @@ describe("DataFrame", function () {
20472047
let rslt = [[2, 4, 6, 'c'], [0, 2, 4, 'b'], [360, 180, 360, 'a']];
20482048
assert.deepEqual(df.values, rslt);
20492049
});
2050+
it("sort index in descending order and retains index", function () {
2051+
let data = [[0, 2, 4, "b"],
2052+
[360, 180, 360, "a"],
2053+
[2, 4, 6, "c"]];
2054+
2055+
let df = new dfd.DataFrame(data, { "columns": ["col1", "col2", "col3", "col4"], index: ["b", "a", "c"] });
2056+
let df2 = df.sort_index({ ascending: false });
2057+
let rslt = ["c", "b", "a"];
2058+
2059+
assert.deepEqual(df2.index, rslt);
2060+
});
20502061
});
20512062

20522063
describe("append", function () {

danfojs-node/src/core/frame.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,7 +1239,7 @@ export default class DataFrame extends NDframe {
12391239
const dfValues = this.values;
12401240
for (let i = 0; i < dfValues.length; i++) {
12411241
const values = dfValues[i];
1242-
if (!values.includes(NaN)) {
1242+
if (!values.includes(NaN) && !values.includes(undefined) && !values.includes(null)) {
12431243
newData.push(values);
12441244
newIndex.push(this.index[i]);
12451245
}
@@ -2102,8 +2102,9 @@ export default class DataFrame extends NDframe {
21022102
});
21032103

21042104
const sortedObjectArr = utils.sortObj(objToSort, ascending);
2105-
const sortedIndex = sortedObjectArr.map((obj) => obj.index);
2105+
let sortedIndex = sortedObjectArr.map((obj) => obj.index);
21062106
const newData = sortedIndex.map((i) => (this.values)[i]);
2107+
sortedIndex = sortedIndex.map((i) => index[i]);
21072108

21082109
if (inplace) {
21092110
this.$setValues(newData);

danfojs-node/src/core/series.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -785,9 +785,10 @@ export default class Series extends NDframe {
785785
if (inplace) {
786786
this.$setValues(data);
787787
} else {
788-
const sf = this.copy();
789-
sf.$setValues(data);
790-
return sf;
788+
return new Series(data, {
789+
index: this.index,
790+
config: { ...this.config }
791+
});
791792
}
792793
}
793794

danfojs-node/tests/core/frame.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ describe("DataFrame", function () {
644644
let data = [[0, 2, 4], [360, 180, 360]];
645645
let df = new DataFrame(data, { columns: ["col1", "col2", "col3"] });
646646
assert.deepEqual(df.mean().values, [180, 91, 182]);
647-
assert.deepEqual(df.mean().index, ["col1", "col2", "col3"] );
647+
assert.deepEqual(df.mean().index, ["col1", "col2", "col3"]);
648648

649649
});
650650
it("Return mean of a DataFrame along axis 0 (row)", function () {
@@ -1431,6 +1431,17 @@ describe("DataFrame", function () {
14311431
assert.deepEqual(df.values, df_val);
14321432

14331433
});
1434+
it("drop works for undefined values", function () {
1435+
let data = [[null, 1, 2, 3], [3, 4, undefined, 9], [5, 6, 7, 8]];
1436+
let column = ["A", "B", "C", "D"];
1437+
let df = new DataFrame(data, { columns: column });
1438+
1439+
let df_val = [[5, 6, 7, 8]];
1440+
1441+
df.dropna(0, { inplace: true });
1442+
assert.deepEqual(df.values, df_val);
1443+
1444+
});
14341445
});
14351446

14361447
describe("isna", function () {
@@ -2068,6 +2079,17 @@ describe("DataFrame", function () {
20682079
let rslt = [[2, 4, 6, 'c'], [0, 2, 4, 'b'], [360, 180, 360, 'a']];
20692080
assert.deepEqual(df.values, rslt);
20702081
});
2082+
it("sort index in descending order and retains index", function () {
2083+
let data = [[0, 2, 4, "b"],
2084+
[360, 180, 360, "a"],
2085+
[2, 4, 6, "c"]];
2086+
2087+
let df = new DataFrame(data, { "columns": ["col1", "col2", "col3", "col4"], index: ["b", "a", "c"] });
2088+
let df2 = df.sort_index({ ascending: false });
2089+
let rslt = ["c", "b", "a"];
2090+
2091+
assert.deepEqual(df2.index, rslt);
2092+
});
20712093
});
20722094

20732095
describe("append", function () {

0 commit comments

Comments
 (0)