Skip to content

Commit 250b8b2

Browse files
committed
Fixed subsetting bug after rename
1 parent 89b754f commit 250b8b2

4 files changed

Lines changed: 53 additions & 3 deletions

File tree

src/danfojs-base/core/frame.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2184,8 +2184,10 @@ export default class DataFrame extends NDframe implements DataFrameInterface {
21842184
}
21852185

21862186
if (axis === 1) {
2187+
const colsAdded: string[] = [];
21872188
const newColumns = this.columns.map(col => {
21882189
if (mapper[col] !== undefined) {
2190+
colsAdded.push(mapper[col]);
21892191
return mapper[col]
21902192
} else {
21912193
return col
@@ -2194,6 +2196,9 @@ export default class DataFrame extends NDframe implements DataFrameInterface {
21942196

21952197
if (inplace) {
21962198
this.$setColumnNames(newColumns)
2199+
for (const col of colsAdded) {
2200+
this.$setInternalColumnDataProperty(col);
2201+
}
21972202
} else {
21982203
return new DataFrame([...this.values], {
21992204
index: [...this.index],
@@ -2472,7 +2477,7 @@ export default class DataFrame extends NDframe implements DataFrameInterface {
24722477
if (utils.isBrowserEnv()) {
24732478
const plt = new PlotlyLib(this, divId);
24742479
return plt;
2475-
}else{
2480+
} else {
24762481
throw new Error("Not supported in NodeJS");
24772482
}
24782483
}

src/danfojs-base/shared/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default class Utils {
6464
* @returns
6565
*/
6666
isObject(value: any): boolean {
67-
return typeof value === "object" && value.constructor && value.constructor.name === "Object";
67+
return value && typeof value === "object" && value.constructor && value.constructor.name === "Object";
6868
}
6969

7070
/**

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2279,6 +2279,29 @@ describe("DataFrame", function () {
22792279
assert.deepEqual(df.index, res);
22802280

22812281
});
2282+
2283+
it("Get new column via subseting works after rename (inplace)", function () {
2284+
let data = {
2285+
"A": [ -20, 30, 47.3 ],
2286+
"B": [ 34, -4, 5 ],
2287+
"C": [ 20, 2, 30 ]
2288+
};
2289+
let df = new dfd.DataFrame(data);
2290+
df.rename({ "A": "new_name" }, { inplace: true });
2291+
df["new_name"].print();
2292+
assert.deepEqual(df["new_name"].values, data["A"]);
2293+
});
2294+
2295+
it("Get new column via subseting works after rename (not-inplace)", function () {
2296+
let data = {
2297+
"A": [ -20, 30, 47.3 ],
2298+
"B": [ 34, -4, 5 ],
2299+
"C": [ 20, 2, 30 ]
2300+
};
2301+
let df = new dfd.DataFrame(data);
2302+
let new_df = df.rename({ "A": "new_name" });
2303+
assert.deepEqual(new_df["new_name"].values, data["A"]);
2304+
});
22822305
});
22832306

22842307
describe("sortIndex", function () {

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ describe("DataFrame", function () {
148148
it("Add new array values to DataFrame works", function () {
149149
let data = { alpha: ["A", "B", "C", "D"], val_count: [1, 2, 3, 4], val_sum: [20.3, 30.456, 40.90, 90.1] };
150150
let df = new DataFrame(data);
151-
const newdf = df.addColumn("new_column", ["a", "b", "c", "d"], {atIndex: 0}) as DataFrame;
151+
const newdf = df.addColumn("new_column", ["a", "b", "c", "d"], { atIndex: 0 }) as DataFrame;
152152
assert.deepEqual(newdf["new_column"].values, ["a", "b", "c", "d"]);
153153
assert.deepEqual(newdf.columns, ["new_column", "alpha", "val_count", "val_sum"]);
154154
assert.deepEqual(newdf.dtypes, ["string", "int32", "float32", "string"]);
@@ -2303,6 +2303,28 @@ describe("DataFrame", function () {
23032303
assert.deepEqual(df.index, res);
23042304

23052305
});
2306+
it("Get new column via subseting works after rename (inplace)", function () {
2307+
let data = {
2308+
"A": [-20, 30, 47.3],
2309+
"B": [34, -4, 5],
2310+
"C": [20, 2, 30]
2311+
};
2312+
let df = new DataFrame(data);
2313+
df.rename({ "A": "new_name" }, { inplace: true });
2314+
df["new_name"].print();
2315+
assert.deepEqual(df["new_name"].values, data["A"]);
2316+
});
2317+
2318+
it("Get new column via subseting works after rename (not-inplace)", function () {
2319+
let data = {
2320+
"A": [-20, 30, 47.3],
2321+
"B": [34, -4, 5],
2322+
"C": [20, 2, 30]
2323+
};
2324+
let df = new DataFrame(data);
2325+
let new_df = df.rename({ "A": "new_name" });
2326+
assert.deepEqual(new_df["new_name"].values, data["A"]);
2327+
});
23062328
});
23072329

23082330
describe("sortIndex", function () {

0 commit comments

Comments
 (0)