Как вы сопоставляете элемент во всем фрейме данных и возвращаете всю строку или индекс этого конкретного сопоставленного элемента? - PullRequest
1 голос
/ 25 марта 2019

Каждая строка в этом фрейме данных представляет заказ, а в файле executeStatus.x содержится некоторая информация о состоянии заказа.

Эти столбцы executeStatus.x автоматически создаются flatten_json amirziai, в зависимости от количества аргументов.Таким образом, если для одного ордера есть 3 статуса, как в строке 0, то будет выполнено выполнениеStatus.2.Поскольку строки 1 и 2 имеют только один статус, он имеет значения только в executeStatus.0.

Моя проблема в том, что я не могу сопоставить «ORDER_FULFILLED», потому что я не знаю, сколько там будет executeStatuses, и мне нужно было бы написать точное имя столбца, например, df [df ['executeStatus.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 имеют ORDER_FULFILLED в executeStatuses, а строка 3 - нет, поэтому его следует исключить.Спасибо!

investedAmount  loanId  requestedAmount  OrderInstructId  
0            50.0   22222             55.0            55555  
1            25.0   33333             25.0            55555  

1 Ответ

0 голосов
/ 25 марта 2019

Используйте 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...