此数据帧中的每一行都代表一个订单,执行Status.x具有有关订单状态的一些信息。
executionStatus.x列由flatten_json自动创建,由 amirziai,取决于有多少论点。因此,如果一个订单的3种状态(如第0行),则最多可以显示executionStatus.2。由于第1行和第2行仅具有一种状态,因此它仅在executeStatus.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
答案 0 :(得分:0)
使用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)