Как увидеть наибольшее значение между двумя столбцами информационного кадра и сколько значений в одном столбце больше другого? - PullRequest
0 голосов
/ 23 июня 2019

Мне нужно сравнить два столбца (a, b) кадра данных, чтобы увидеть, сколько значений "a" больше, чем "b в пандах.

Я пробовал так, но не знаю, лучший ли это вариант:

def result(y,z):
    if(y > z):
          return True

df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1)

В результате я получаю список истинных и ложных результатов, но мне нужно знать сумму каждого из них.

Ответы [ 3 ]

2 голосов
/ 23 июня 2019

Вы можете проверить с помощью value_counts

df['a'].gt(df['b']).value_counts()
1 голос
/ 23 июня 2019

Вам нужно:

(df['a'] > df['b']).sum()

Рассмотрим следующий пример:

df = pd.DataFrame({
    'a':[10,20,30,40],
    'b':[1,200,300,4]
})

Вывод:

    a   b
0   10  1
1   20  200
2   30  300
3   40  4

Тогда

 (df['a'] > df['b']).sum()

Вывод

2
0 голосов
/ 23 июня 2019

Вы сделали все правильно, просто добавьте value_counts () так, чтобы:

df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1).value_counts()

еще лучше, если ваша функция result тривиальна, вы можете написать:

df.apply(lambda x: x['a']>x['b'], axis=1).value_counts()
...