求sql语句 将某列中的正数保持不变,负数取反成为正数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求sql语句 将某列中的正数保持不变,负数取反成为正数相关的知识,希望对你有一定的参考价值。

求sql语句 将某列中的正数保持不变,负数取反成为正数

参考技术A select ABS(列名)from 表本回答被提问者和网友采纳

将某列中某行的值与其他列中的值进行比较

【中文标题】将某列中某行的值与其他列中的值进行比较【英文标题】:Comparing the value of a row in a certain column to the values in other columns 【发布时间】:2018-09-12 04:15:35 【问题描述】:

使用熊猫

我正在尝试确定某一行中的值是否大于同一行中所有其他列中的值。 为此,我遍历数据框的行并使用“all”函数比较其他列中的值;但似乎这会引发错误“字符串索引必须是整数”

这似乎应该可行:这种方法有什么问题?

for row in dataframe:
    if all (i < row['col1'] for i in [row['col2'], row['col3'], row['col4'], row['col5']]):
        row['newcol'] = 'value'

【问题讨论】:

迭代数据框对象与迭代其列标题相同。您可能想查看df.iterrows() 方法。 【参考方案1】:

在我看来,主要问题是使用循环来实现可向量化逻辑。

以下是如何使用numpy.where 实现您的逻辑的示例。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 9, (5, 10)))

df['new_col'] = np.where(df[1] > df.max(axis=1),
                         'col1_is_max',
                         'col1_not_max')

结果:

   0  1  2  3  4  5  6  7  8  9       new_col
0  4  1  3  8  3  2  5  1  1  2  col1_not_max
1  2  7  1  2  5  3  5  1  8  5   col1_is_max
2  1  8  2  5  7  4  0  3  6  3   col1_is_max
3  6  4  2  1  7  2  0  8  3  2  col1_not_max
4  0  1  3  3  0  3  7  4  4  1  col1_not_max

【讨论】:

【参考方案2】:

构建一个掩码并将其传递给loc

df.loc[df['col1'] > df.loc[:, 'col2':'col5'].max(axis=1), 'newcol'] = 'newvalue'

【讨论】:

非常聪明。非常感谢 有没有办法将此方法用于不正确的列,例如 df.loc[:, ('col1', 'col3':'col5')] ;或者这行不通?谢谢 @SAtt 除非您重新排序列,否则它不会起作用。否则,明确列出列表中的每个列名。 您是如何如此迅速地得出这个答案的?谢谢。 @SAtt 不客气……我已经与 pandas 合作了大约 8 个月……我的个人资料显示,我回答的这类问题比我应得的要多;) ,所以我对常见的开发问题和陷阱有一个想法——这让我可以更有效地为像你这样的用户提供帮助。我邀请你也这样做,这是一个很棒的社区,你会学到很多东西——当然这值得你花时间。祝你好运!

以上是关于求sql语句 将某列中的正数保持不变,负数取反成为正数的主要内容,如果未能解决你的问题,请参考以下文章

原码 反码 补码

原码 反码 补码

原码反码补码,负数表示法

怎么求补码的原码?

二进制的反码

源码,反码以及补码