我有一个熊猫数据框,我想在其中验证A列大于B列(行方向)。我正在做类似的事情
tmp=df['B']-df['A']
if(any( [ v for v in tmp if v > 0])):
....
我想知道是否有更好(简洁)的方法,或者pandas数据框是否具有内置的例程来完成此任务
答案 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')