比较熊猫数据框中的两列

时间:2019-11-05 12:59:37

标签: python pandas dataframe

我有一个熊猫数据框,我想在其中验证A列大于B列(行方向)。我正在做类似的事情

tmp=df['B']-df['A']
if(any( [ v for v in tmp if v > 0])):
   ....

我想知道是否有更好(简洁)的方法,或者pandas数据框是否具有内置的例程来完成此任务

3 个答案:

答案 0 :(得分:2)

df = pd.DataFrame({'A': [1, 2, 3], 'B': [3, 1, 1]})

temp = df['B'] - df['A']

print(temp)

0    2
1   -1
2   -2

现在您可以使用temp > 0创建布尔序列:

print(temp > 0)

0     True
1    False
2    False
dtype: bool

此布尔系列可以输入any,因此您可以使用:

if any(temp > 0):
    print('juhu!')

或者简单地(避免使用temp):

if any(df['B'] > df['A']):
    print('juhu')

首先使用创建布尔序列的相同逻辑:

print(df['B'] > df['A'])

0     True
1    False
2    False
dtype: bool

答案 1 :(得分:1)

df ['B']> df ['A']将是布尔数据类型的熊猫系列。

select 
    num_hour as hour,
    nvl(productions, 0) as productions
from
    (select  level-1 as num_hour from dual connect by level <= 24 order by level) t2
left join 
    table_1 t1
on 
    num_hour = to_number(hour)
order by num_hour

例如

 >>> (df['B']>df['A']).dtype
      dtype('bool')

any()函数如果可迭代项中的任何一项为true,则返回True

>>> df['B']>df['A']
   0     True
   1    False
   2    False
   3     True
   4     True
   dtype: bool

答案 2 :(得分:0)

我猜您想检查是否有df ['B']> df ['A']然后做点什么。

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [2, 0, 6, 3]})
if np.where(df['B'] > df['A'], 1, 0).sum():
    print('do something')