该数据框中的每一行都代表一个订单,执行Status.x具有有关订单状态的一些信息。
那些executionStatus.x列由flatten_json自动创建,由
amirziai,取决于有多少论点。因此,如果一个订单的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)
关于python - 如何匹配整个数据框中的元素,并返回该特定匹配元素的整个行或索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55332802/