DataFrame检测何时一列变得比另一列大

时间:2019-06-06 08:33:40

标签: python pandas dataframe

我想知道用于检测何时一列中的值大于另一列中的值的代码。因此,在下面的示例中,行索引1 B变得比A大,而行索引3 A变得比B大。我想要一个突出显示行1和2以及突出显示哪个列的DataFrame。

In [1]: df
Out[1]: 
   A  B
0  3  2
1  5  6
2  3  7
3  8  2

所需结果:

In [1]: df_result
Out[1]: 
   RES
0  0
1  -1
2  0
3  1

3 个答案:

答案 0 :(得分:5)

您可以使用view检查A大于强制转换为B的{​​{1}}并取diff

int8

答案 1 :(得分:0)

您可以对列差异使用np.sign来知道差异的符号,然后用列标签替换值:

df['who_is_bigger'] = (pd.DataFrame(np.sign(df['col1'] - df['col2']))
.replace({-1: 'col2', 1: 'col1', 0:'same_size'}))

如果两列的值相同,则将在who_is_bigger列中返回最大列的列标签和same_size字符串

答案 2 :(得分:0)

如果比较是专门在两列之间进行的,则可以采用两者之间的差异,假设我们已经有了以下数据框:

>>> data = pd.DataFrame.from_dict({'a': [5, 4, 3, 2, 1], 'b': [5, 3, 4, 1, 2]})
>>> data
   a  b
0  5  5
1  4  3
2  3  4
3  2  1
4  1  2

然后通过执行data['a'] - data['b'],我们得到每个变量之间的增量,如下所示:

>>> data['a'] - data['b']
0    0
1    1
2   -1
3    1
4   -1

0表示该行中的两列都具有相同的编号,大于0的数字表示左列(a)大于右列({ {1}})和一个负数(相反)。