|
|
发表于 2026-2-23 23:10:56
|
显示全部楼层
要筛选满足多个条件的数据,可以使用 Data-Forge 的 where 方法,结合逻辑运算符组合条件。以下是对应的 JavaScript 代码:
- const DataFrame = require('data-forge');
- let dataFrame = new DataFrame([
- { A: '2021-06-26T03:45:00.000Z', B: 10, C:'香蕉', D:'猴子' },
- { A: '2021-06-27T03:45:00.000Z', B: 20, C:'香蕉', D:'狮子' },
- { A: '2022-06-28T03:45:00.000Z', B: 30, C:'苹果', D:'大象' },
- { A: '2021-07-28T03:45:00.000Z', B: 50, C:'苹果', D:'猴子' },
- { A: '2025-06-28T03:45:00.000Z', B: 60, C:'梨子', D:'狮子' },
- { A: '2021-09-28T03:45:00.000Z', B: 30, C:'橘子', D:'老虎' },
- ]);
- // 提取年份并转换为数字
- dataFrame = dataFrame.withSeries('Year',
- dataFrame.deflate(row => new Date(row.A).getFullYear()));
- // 筛选条件
- const filtered = dataFrame.where(row => {
- const year = row.Year;
- const bValue = row.B;
- const cValue = row.C;
- const dValue = row.D;
- return ([2021, 2022].includes(year) &&
- [30, 50].includes(bValue) &&
- ['苹果', '梨子'].includes(cValue) &&
- ['猴子', '狮子'].includes(dValue));
- });
- console.log(filtered.toString());
复制代码
这段代码执行以下步骤:
1. 使用 withSeries 添加一个新列 "Year",提取日期列 A 的年份。
2. 在 where 方法中定义筛选条件,使用 includes 检查每个值是否在指定范围内。
3. 条件之间使用逻辑与 (&&) 连接,确保同时满足所有条件。
输出结果将只包含满足所有条件的行:
- A 列年份为 2021 或 2022
- B 列值为 30 或 50
- C 列值为 "苹果" 或 "梨子"
- D 列值为 "猴子" 或 "狮子"
如果不希望保留 "Year" 列,可以在筛选后使用 dropSeries('Year') 删除。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|