Skip to content
This repository has been archived by the owner on Aug 17, 2024. It is now read-only.

[BUG] Filtering is not working as expected #131

Open
andreyshedko opened this issue May 12, 2022 · 1 comment
Open

[BUG] Filtering is not working as expected #131

andreyshedko opened this issue May 12, 2022 · 1 comment
Labels

Comments

@andreyshedko
Copy link

andreyshedko commented May 12, 2022

Describe the bug
Filtering is not working as expected - sometimes it produces proper results, some time is not.
For example, using this function (or any other comparison operator) in the filtering leads to unpredictable results:

const less = (key: string, value: string, row: Row) => {
  console.log(row.get(key) < value, row.get(key), value);
  return row.get(key) < value;
};

In the other place, we are using a filter with our custom function.

df?.filter(less.bind(this, key, value));

Results:

1) Result of comparison 2) Value from the row 3) Value to compare.
false 67.456981 100 // 67.456981 < 100 === false WAT? 
false 105.229483 100
false 18.839348 100
false 79.228270 100
false 75.535063 100
false 112.173642 100
false 16.632894 100
false 17.532905 100
false 18.245026 100
false 94.522464 100
false 174.695347 100
false 122.806919 100
false 189.747314 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
false 123.263836 100
true 0.007850 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100
true 0.000000 100

To Reproduce
Steps to reproduce the behavior:

  1. Create the dataframe
  2. Use filtering on the dataframe.
  3. See error.

Expected behavior
Proper filtering of values.

Desktop (please complete the following information):

  • MacOs Monterey
  • Chrome
  • Node.js
@andreyshedko andreyshedko changed the title [BUG] Filtering is not worked as expected [BUG] Filtering is not working as expected May 16, 2022
@Gmousse
Copy link
Owner

Gmousse commented May 20, 2022

Hello !

I can't reproduce your issue. I wrote this little script:

const dfjs = require("dataframe-js");

const less = (key, value, row) => {
    console.log(row.get(key) < value, row.get(key), value);
    return row.get(key) < value;
};

const df = new dfjs.DataFrame(
    Array.from(Array(20), (_) => [Math.random() * 300 + 1, 1]),
    ["A", "B"]
);

df.filter(less.bind(null, "A", "100"));

which gives me a coherent result:

false 135.36191545571762 100
false 235.79120556628112 100
false 184.15679375717343 100
true 88.29725309217937 100
false 158.29429647997472 100
true 9.849243976691735 100
false 238.05668318894226 100
true 42.21381998112248 100
false 119.41035658679624 100
false 132.14371883449024 100
true 16.028131873137674 100
true 78.61258347929108 100
false 286.4894545109921 100
false 163.1183359928458 100
false 196.30010960512905 100
true 87.27977594480423 100
true 30.937993159318733 100
false 227.27296092368724 100
true 36.88819885930239 100
true 9.13452659237337 100

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants