Skip to content

Commit 985e9ae

Browse files
committed
Fix fillNa o fill bug
1 parent 95592e5 commit 985e9ae

File tree

8 files changed

+152
-7
lines changed

8 files changed

+152
-7
lines changed

src/danfojs-base/core/frame.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1906,7 +1906,7 @@ export default class DataFrame extends NDframe implements DataFrameInterface {
19061906
): DataFrame | void {
19071907
let { columns, inplace } = { inplace: false, ...options }
19081908

1909-
if (!values && typeof values !== "boolean") {
1909+
if (!values && typeof values !== "boolean" && typeof values !== "number") {
19101910
throw Error('ParamError: value must be specified');
19111911
}
19121912

src/danfojs-base/core/series.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,8 +773,8 @@ export default class Series extends NDframe implements SeriesInterface {
773773
fillNa(value: number | string | boolean, options?: { inplace?: boolean }): Series | void {
774774
const { inplace } = { inplace: false, ...options }
775775

776-
if (!value && typeof value !== 'boolean') {
777-
throw Error('Value Error: Must specify value to replace with');
776+
if (!value && typeof value !== "boolean" && typeof value !== "number") {
777+
throw Error('ParamError: value must be specified');
778778
}
779779

780780
const newValues: ArrayType1D = [];

src/danfojs-base/shared/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default class Configs {
3636
tableDisplayConfig: {},
3737
tableMaxRow: 10,
3838
tableMaxColInConsole: 10,
39-
dtypeTestLim: 10,
39+
dtypeTestLim: 20,
4040
lowMemoryMode: false,
4141
...options
4242
}

src/danfojs-base/shared/defaults.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
export const BASE_CONFIG = {
2020
tableMaxRow: 10,
2121
tableMaxColInConsole: 10,
22-
dtypeTestLim: 7,
22+
dtypeTestLim: 20,
2323
lowMemoryMode: false,
2424
}
2525

src/danfojs-browser/tests/core/frame.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1663,7 +1663,16 @@ describe("DataFrame", function () {
16631663
const df_filled = df.fillNa(-999);
16641664
assert.deepEqual(df_filled.values, expected);
16651665
});
1666+
it("replace all undefined value with 0 works", function () {
1667+
const data = [ [ undefined, 1, 2, 3 ], [ 3, 4, null, 9 ], [ 5, NaN, 7, 8 ] ];
1668+
const columns = [ "A", "B", "C", "D" ];
1669+
const df = new dfd.DataFrame(data, { columns: columns });
1670+
1671+
const expected = [ [ 0, 1, 2, 3 ], [ 3, 4, 0, 9 ], [ 5, 0, 7, 8 ] ];
16661672

1673+
const df_filled = df.fillNa(0);
1674+
assert.deepEqual(df_filled.values, expected);
1675+
});
16671676
it("Fills only a specified column", function () {
16681677
const data = [ [ 1, 2, 3 ],
16691678
[ 4, 5, 6 ],

src/danfojs-browser/tests/core/generic.test.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,69 @@ describe("Generic (NDFrame)", function () {
121121
assert.deepEqual(ndframe.values, [ [ "A", NaN ], [ NaN, 2 ] ]);
122122
});
123123

124+
// it("NDframe created from json takes key position into consideration", function () {
125+
// let json_data = [ { A: "A", B: "B", C: "C" },
126+
// { A: "A", B: "B", C: "C" },
127+
// { C: "C", B: "B", A: "A" },
128+
// { A: "A", C: "C", B: "B" } ];
129+
130+
// let output = [
131+
// [
132+
// 'A',
133+
// 'B',
134+
// 'C'
135+
// ],
136+
// [
137+
// 'A',
138+
// 'B',
139+
// 'C'
140+
// ],
141+
// [
142+
// 'A',
143+
// 'B',
144+
// 'C'
145+
// ],
146+
// [
147+
// 'A',
148+
// 'B',
149+
// 'C'
150+
// ]
151+
// ];
152+
// let ndframe = new dfd.NDframe({ json_data, isSeries: false });
153+
// assert.deepEqual(ndframe.values, output);
154+
// });
155+
156+
// it("NDframe created from json sets value to NaN if not present", function () {
157+
// let json_data = [ { A: "A", B: "B", C: "C" },
158+
// { A: "A", B: "B", C: "C" },
159+
// { C: "C", B: "B", A: "A" },
160+
// { A: "A", C: "C" } ];
161+
162+
// let output = [
163+
// [
164+
// 'A',
165+
// 'B',
166+
// 'C'
167+
// ],
168+
// [
169+
// 'A',
170+
// 'B',
171+
// 'C'
172+
// ],
173+
// [
174+
// 'A',
175+
// 'B',
176+
// 'C'
177+
// ],
178+
// [
179+
// 'A',
180+
// 'B',
181+
// NaN
182+
// ]
183+
// ];
184+
// let ndframe = new dfd.NDframe({ json_data, isSeries: false });
185+
// assert.deepEqual(ndframe.values, output);
186+
// });
124187

125188
});
126189

src/danfojs-node/test/core/frame.test.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1668,7 +1668,7 @@ describe("DataFrame", function () {
16681668
assert.deepEqual(df.values, expected);
16691669
});
16701670
it("replace all undefined value", function () {
1671-
const data = [[undefined, 1, 2, 3], [3, 4, undefined, 9], [5, 6, 7, 8]];
1671+
const data = [[undefined, 1, 2, 3], [3, 4, null, 9], [5, 6, 7, 8]];
16721672
const columns = ["A", "B", "C", "D"];
16731673
const df = new DataFrame(data, { columns: columns });
16741674

@@ -1677,6 +1677,17 @@ describe("DataFrame", function () {
16771677
const df_filled = df.fillNa(-999) as DataFrame
16781678
assert.deepEqual(df_filled.values, expected);
16791679
});
1680+
it("replace all undefined value with 0 works", function () {
1681+
const data = [[undefined, 1, 2, 3], [3, 4, null, 9], [5, NaN, 7, 8]];
1682+
const columns = ["A", "B", "C", "D"];
1683+
const df = new DataFrame(data, { columns: columns });
1684+
1685+
const expected = [[0, 1, 2, 3], [3, 4, 0, 9], [5, 0, 7, 8]];
1686+
1687+
const df_filled = df.fillNa(0) as DataFrame
1688+
assert.deepEqual(df_filled.values, expected);
1689+
});
1690+
16801691

16811692
it("Fills only a specified column", function () {
16821693
const data = [[1, 2, 3],

src/danfojs-node/test/core/generic.test.ts

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,69 @@ describe("Generic (NDFrame)", function () {
123123
let ndframe = new NDframe({ data, isSeries: false });
124124
assert.deepEqual(ndframe.values as any, [["A", NaN], [NaN, 2]]);
125125
});
126-
126+
// it("NDframe created from json takes key position into consideration", function () {
127+
// let json_data = [{ A: "A", B: "B", C: "C" },
128+
// { A: "A", B: "B", C: "C" },
129+
// { C: "C", B: "B", A: "A" },
130+
// { A: "A", C: "C", B: "B" }];
131+
132+
// let output = [
133+
// [
134+
// 'A',
135+
// 'B',
136+
// 'C'
137+
// ],
138+
// [
139+
// 'A',
140+
// 'B',
141+
// 'C'
142+
// ],
143+
// [
144+
// 'A',
145+
// 'B',
146+
// 'C'
147+
// ],
148+
// [
149+
// 'A',
150+
// 'B',
151+
// 'C'
152+
// ]
153+
// ];
154+
// let ndframe = new NDframe({ data: json_data, isSeries: false });
155+
// assert.deepEqual(ndframe.values, output);
156+
// });
157+
158+
// it("NDframe created from json sets value to NaN if not present", function () {
159+
// let json_data = [{ A: "A", B: "B", C: "C" },
160+
// { A: "A", B: "B", C: "C" },
161+
// { C: "C", B: "B", A: "A" },
162+
// { A: "A", C: "C" }];
163+
164+
// let output = [
165+
// [
166+
// 'A',
167+
// 'B',
168+
// 'C'
169+
// ],
170+
// [
171+
// 'A',
172+
// 'B',
173+
// 'C'
174+
// ],
175+
// [
176+
// 'A',
177+
// 'B',
178+
// 'C'
179+
// ],
180+
// [
181+
// 'A',
182+
// 'B',
183+
// NaN
184+
// ]
185+
// ];
186+
// let ndframe = new NDframe({ data: json_data, isSeries: false });
187+
// assert.deepEqual(ndframe.values, output);
188+
// });
127189

128190
});
129191

0 commit comments

Comments
 (0)