danfojs
danfojs copied to clipboard
query operator
i see querying by logical operators has been deprecated: https://danfo.jsdata.org/api-reference/dataframe/danfo.dataframe.query#query-a-dataframe-using-logical-operators
is there a reason it was deprecated? i need to filter my DF to remove certain values like so:
const filtered = this.datapoints.query({
column: "ModelName",
is: "==",
to: "model"
}).query({
column: "Timestamp",
is: ">=",
to: start
}).query({
column: "Timestamp",
is: "<=",
to: end
})
was this logic deprecated because it is inefficient? im not sure how to achieve this with the updated logic in query. any help or clarification would be appreciated!
@priyankat99 you can't chain it but you can do this
const query = [
{
column: "ModelName",
is: "==",
to: "model"
},
{
column: "Timestamp",
is: ">=",
to: start
},
{
column: "Timestamp",
is: "<=",
to: end
}
];
const finalQuery = query.reduce((acc, condition, index) => {
if (condition.is === '>=') {
return index === 0 ? this.datapoints[condition.column].gte(condition.to) : acc.and(this.datapoints[condition.column].gte(condition.to));
} else if (condition.is === '<=') {
return index === 0 ? this.datapoints[condition.column].lte(condition.to) : acc.and(this.datapoints[condition.column].lte(condition.to));
} else if (condition.is === '==') {
return index === 0 ? this.datapoints[condition.column].eq(condition.to) : acc.and(this.datapoints[condition.column].eq(condition.to));
}
}, null);
const filtered = this.datapoints.query(finalQuery);