Skip to content

Commit b614565

Browse files
committed
Fixed subsetting bug after rename
1 parent b9f81c7 commit b614565

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed

danfojs-browser/src/core/frame.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2043,8 +2043,10 @@ export default class DataFrame extends NDframe {
20432043
}
20442044

20452045
if (axis === 1) {
2046+
const colsAdded = [];
20462047
const newColumns = this.columns.map((col) => {
20472048
if (mapper[col] !== undefined) {
2049+
colsAdded.push(mapper[col]);
20482050
return mapper[col];
20492051
} else {
20502052
return col;
@@ -2053,6 +2055,9 @@ export default class DataFrame extends NDframe {
20532055

20542056
if (inplace) {
20552057
this.$setColumnNames(newColumns);
2058+
for (const col of colsAdded) {
2059+
this.$setInternalColumnDataProperty(col);
2060+
}
20562061
} else {
20572062
return new DataFrame([...this.values], {
20582063
index: [...this.index],

danfojs-browser/tests/core/frame.js

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

20222022
});
2023+
2024+
it("Get new column via subseting works after rename (inplace)", function () {
2025+
let data = {
2026+
"A": [-20, 30, 47.3],
2027+
"B": [34, -4, 5],
2028+
"C": [20, 2, 30]
2029+
};
2030+
let df = new dfd.DataFrame(data);
2031+
df.rename({ mapper: { "A": "new_name" }, inplace: true });
2032+
df["new_name"].print();
2033+
assert.deepEqual(df["new_name"].values, data["A"]);
2034+
});
2035+
2036+
it("Get new column via subseting works after rename (not-inplace)", function () {
2037+
let data = {
2038+
"A": [-20, 30, 47.3],
2039+
"B": [34, -4, 5],
2040+
"C": [20, 2, 30]
2041+
};
2042+
let df = new dfd.DataFrame(data);
2043+
let new_df = df.rename({ mapper: { "A": "new_name" } });
2044+
assert.deepEqual(new_df["new_name"].values, data["A"]);
2045+
});
20232046
});
20242047

20252048
describe("sort_index", function () {

danfojs-node/src/core/frame.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2045,8 +2045,10 @@ export default class DataFrame extends NDframe {
20452045
}
20462046

20472047
if (axis === 1) {
2048+
const colsAdded = [];
20482049
const newColumns = this.columns.map((col) => {
20492050
if (mapper[col] !== undefined) {
2051+
colsAdded.push(mapper[col]);
20502052
return mapper[col];
20512053
} else {
20522054
return col;
@@ -2055,6 +2057,9 @@ export default class DataFrame extends NDframe {
20552057

20562058
if (inplace) {
20572059
this.$setColumnNames(newColumns);
2060+
for (const col of colsAdded) {
2061+
this.$setInternalColumnDataProperty(col);
2062+
}
20582063
} else {
20592064
return new DataFrame([...this.values], {
20602065
index: [...this.index],

danfojs-node/tests/core/frame.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,6 +2052,28 @@ describe("DataFrame", function () {
20522052
assert.deepEqual(df.index, res);
20532053

20542054
});
2055+
it("Get new column via subseting works after rename (inplace)", function () {
2056+
let data = {
2057+
"A": [-20, 30, 47.3],
2058+
"B": [34, -4, 5],
2059+
"C": [20, 2, 30]
2060+
};
2061+
let df = new DataFrame(data);
2062+
df.rename({ mapper: { "A": "new_name" }, inplace: true });
2063+
df["new_name"].print();
2064+
assert.deepEqual(df["new_name"].values, data["A"]);
2065+
});
2066+
2067+
it("Get new column via subseting works after rename (not-inplace)", function () {
2068+
let data = {
2069+
"A": [-20, 30, 47.3],
2070+
"B": [34, -4, 5],
2071+
"C": [20, 2, 30]
2072+
};
2073+
let df = new DataFrame(data);
2074+
let new_df = df.rename({ mapper: { "A": "new_name" } });
2075+
assert.deepEqual(new_df["new_name"].values, data["A"]);
2076+
});
20552077
});
20562078

20572079
describe("sort_index", function () {

0 commit comments

Comments
 (0)