python - 如何匹配整个数据框中的元素并返回该特定匹配元素的整行或索引?
问题描述
此数据框中的每一行代表一个订单,executionStatus.x 包含有关订单状态的一些信息。
这些 executionStatus.x 列由 amirziai 的 flatten_json 自动创建,具体取决于有多少参数。因此,如果一个订单有 3 个状态,例如第 0 行,则最多会有 executionStatus.2。由于第 1 行和第 2 行只有一种状态,因此它只有 executionStatus.0 中的值。
我的问题是我无法匹配“ORDER_FULFILLED”,因为我不知道会有多少 executionStatuses,我需要像这样写出确切的列名 df[df['executionStatus.0'].str.match('ORDER_FULFILLED ')]。
executionStatus.0 executionStatus.1 executionStatus.2 \
0 REQUESTED_AMOUNT_ROUNDED MEOW ORDER_FULFILLED
1 ORDER_FULFILLED NaN NaN
2 NOT_AN_INFUNDING_LOAN NaN NaN
investedAmount loanId requestedAmount OrderInstructId
0 50.0 22222 55.0 55555
1 25.0 33333 25.0 55555
2 0.0 44444 25.0 55555
有没有办法在整个数据框中获取与“ORDER_FULFILLED”元素匹配的整行或索引?
理想情况下,匹配的数据帧应该如下所示,因为第 0 行和第 1 行在 executionStatuses 中有 ORDER_FULFILLED 而第 3 行没有,因此应该将其排除。谢谢!
investedAmount loanId requestedAmount OrderInstructId
0 50.0 22222 55.0 55555
1 25.0 33333 25.0 55555
解决方案
用于df.filter()
获取包含executionStatus
布尔掩码的类似列:
df[df.filter(like='executionStatus').eq('ORDER_FULFILLED').any(axis=1)]
executionStatus.0 executionStatus.1 executionStatus.2 \
0 REQUESTED_AMOUNT_ROUNDED MEOW ORDER_FULFILLED
1 ORDER_FULFILLED NaN NaN
investedAmount loanId requestedAmount OrderInstructId
0 50 22222 55 55555
1 25 33333 25 55555
如果execution
要从输出中删除他的列,请使用:
df.loc[df.filter(like='executionStatus').eq('ORDER_FULFILLED').any(axis=1),\
df.columns.difference(df.filter(like='executionStatus').columns)
推荐阅读
- elasticsearch - 无法使用基本身份验证从 URL 存储库恢复快照
- php - PHP替换两个字符串之间的第一个空格(多次出现)
- office-js - 使用 Outlook JS API 访问收件箱中所有邮件项目的方法?
- c++ - 为什么Qt实现返回qint64而不是quint64的QFile::size()
- laravel - 如何为英语和法语字符编写 preg_match?
- java - 使用 RSocketFactory 的替换
- c# - AKS 集群 pod kube 配置位置
- java - 使用带有 Notepad ++ 和 windows cmd 的 pdfbox?
- monitoring - OpenTracing 和 Zipkin 之间的主要区别是什么?
- java - Java 编程 - 基于流程图的编码