Разница в датафреймах Python с фильтром в одну строку - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь найти разницу между двумя столбцами в кадре данных, но хочу применить фильтр.

Вот что я пытаюсь сделать

((df['column1']-df['column2'])/(df['totalcolumn'])).idxmax()

выше дает мне результат, но я хочу рассмотреть только строки, в которых Column1> 0 и Column2> 0.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018
df.query('column1 > 0 and column2 > 0') \
  .eval('(column1 - column2) / totalcolumn').idxmax()
0 голосов
/ 10 мая 2018

Просто сначала получите подмножество интересующего вас кадра данных:

sub_df = df.loc[(df.column1 > 0) & (df.column2 > 0)]

(sub_df.column1 - sub_df.column2  / sub_df.totalcolumn).idxmax()

Если действительно важно, чтобы он был в одной строке (как подсказывает ваш заголовок), вы могли бы выполнить фильтрацию в той же строке, но это неэффективно и не элегантно ИМО:

(df.loc[(df.column1 > 0) & (df.column2 > 0), 'column1'] -
 df.loc[(df.column1 > 0) & (df.column2 > 0), 'column2'] /
 df.loc[(df.column1 > 0) & (df.column2 > 0), 'totalcolumn']).idxmax()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...