javascriptdata / danfojs

Danfo.js is an open source, JavaScript library providing high performance, intuitive, and easy to use data structures for manipulating and processing structured data.
https://danfo.jsdata.org/
MIT License
4.81k stars 209 forks source link

Inplace drop column not working #51

Closed rai-harshit closed 3 years ago

rai-harshit commented 4 years ago

I created a dataframe with a column called 'raw_timestamp'. Then I derived two additional columns out of it, 'raw_data' and 'raw_time' in the following way: df = new dfd.DataFrame(raw_data, {columns:column_names}); df.addColumn({"column":"raw_date","value":df["raw_timestamp"].apply((x) => { return x.split(" ")[0]})}); df.addColumn({"column":"raw_time","value":df["raw_timestamp"].apply((x) => { return x.split(" ")[1]})});

After creating these columns, I decided to drop the column 'raw_timestamp' using the following line: df.drop({columns:["raw_timestamp"],axis:1,inplace:true});

However, when I try to run this, I get an error saying: TypeError: Cannot delete property 'raw_date' of [object Object] at /home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:1791:19 at Array.forEach (<anonymous>) at DataFrame.__set_col_property (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:1790:19) at DataFrame.drop (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:129:14) at /home/ghost/Desktop/Balanced/balanced-nodejs-server/index.js:50:6 at Layer.handle [as handle_request] (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/layer.js:95:5) at next (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/layer.js:95:5) at /home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/index.js:281:22

This issue occurs when I try to drop the column in place. However, when I drop the column and save the result as a new dataframe, things work just fine. df1 = df.drop({columns:["raw_timestamp"],axis:1}); Am I doing something wrong here?

Thank you.

risenW commented 4 years ago

I created a dataframe with a column called 'raw_timestamp'. Then I derived two additional columns out of it, 'raw_data' and 'raw_time' in the following way: df = new dfd.DataFrame(raw_data, {columns:column_names}); df.addColumn({"column":"raw_date","value":df["raw_timestamp"].apply((x) => { return x.split(" ")[0]})}); df.addColumn({"column":"raw_time","value":df["raw_timestamp"].apply((x) => { return x.split(" ")[1]})});

After creating these columns, I decided to drop the column 'raw_timestamp' using the following line: df.drop({columns:["raw_timestamp"],axis:1,inplace:true});

However, when I try to run this, I get an error saying: TypeError: Cannot delete property 'raw_date' of [object Object] at /home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:1791:19 at Array.forEach (<anonymous>) at DataFrame.__set_col_property (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:1790:19) at DataFrame.drop (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/danfojs-node/dist/core/frame.js:129:14) at /home/ghost/Desktop/Balanced/balanced-nodejs-server/index.js:50:6 at Layer.handle [as handle_request] (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/layer.js:95:5) at next (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/route.js:137:13) at Route.dispatch (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/layer.js:95:5) at /home/ghost/Desktop/Balanced/balanced-nodejs-server/node_modules/express/lib/router/index.js:281:22

This issue occurs when I try to drop the column in place. However, when I drop the column and save the result as a new dataframe, things work just fine. df1 = df.drop({columns:["raw_timestamp"],axis:1}); Am I doing something wrong here?

Thank you.

What version of danfo are you using? and is this browser side or node side?

rai-harshit commented 4 years ago

I'm using danfojs-node 0.1.5 as seen below in my package.json file

{ "name": "balanced_server", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "danfojs-node": "^0.1.5", "express": "^4.17.1" }, "devDependencies": { "nodemon": "^2.0.6" } }

risenW commented 3 years ago

Quite late reply, but I wanted to ask of this bug still persists?

github-actions[bot] commented 3 years ago

Stale issue message