如何解决如何在没有循环的情况下检查多行块是否符合特定条件?
我有一个包含 200 万行的数据集,所以循环不是一种选择。 问题大概如下:
每一行都是一个人的交易。 一个人可以进行多次交易。 一个事务可以有多行。 事务可以有不同的类型。 我需要检查每个人的交易类型顺序是否现实。你不能在开户之前关闭账户,诸如此类。
所以基本上:
PersonID TransID TransType
1 1 open
1 2 withdraw
1 2 withdraw
1 3 close
2 1 withdraw
2 1 withdraw
2 2 close
现在,第 2 个人退出并关闭了一个帐户,而没有打开它。那是一个错误。所以我要人2最后一行的索引。
有很多规则,什么可以先于什么以及在什么情况下,所以我需要的是一种编码方式:
从索引 a 到 b,在 y 之前检查 x 是否出现,然后从索引 b+1 到 c 重复,直到我们通过整个数据集
究竟结果是什么,并不重要,如果我得到人的 ID,或者违反规则的行的向量并不那么重要。
有什么想法吗?
解决方法
我建议您将其分解为多个步骤,
为每个人分解一个数据框,
然后每笔交易一个。
然后适当地应用您的规则。您可能会有一些个人级别的规则和一些事务级别的规则。
这里有一些代码可以让你开始。
function App() {
const [inputList,setInputList] = useState([]);
const onAddBtnClick = event => {
setInputList(inputList.concat(<Autocomplete items={foods} />));
};
return (
<Fragment>
<div className="foodcompleter">
<Button onClick={onAddBtnClick} variant="primary" size="lg" block>Add Food</Button>
{inputList}
</div>
</Fragment>
);
}
这将返回每人一个数据帧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。