【问题标题】:Comparing values in Column 2 corresponding to equal values from Column 1 in python比较第 2 列中的值对应于 python 中第 1 列的相等值
【发布时间】:2019-03-30 02:55:30
【问题描述】:

我正在用 Python 编写代码。 我的输入是一个 (780, 2) numpy 数组,其值如下:

[100.2 45
 100.5 54
 200.2 62
 100.2 67
 100.5 88
 ...
 ...
 200.2 99]

随机顺序。

我想比较第二列中对应于第一列中相等值的值,然后创建一个新数组,其中只有最大值。 我期待这样的输出:

[100.2 67
 100.5 88
 ...
 ...
 200.2 99]

新数组的顺序对我来说并不重要。

任何有关生成它的代码的帮助将不胜感激! 提前致谢。

【问题讨论】:

  • 到目前为止您尝试过的最少代码是多少?
  • 你想要 pandas 解决方案吗?
  • 发布的问题似乎根本没有包含any attempt 来解决问题。 StackOverflow 希望您首先try to solve 您自己的问题,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试过的内容,以说明您在 Minimal, Complete, and Verifiable example 中遇到的具体问题。
  • 好吧,我的新数据现在是三列。我使用了另一个问题的解决方案,它适用于两列,但不适用于三列。代码是(df.sort_values(['Col1', 'Col2', 'Col3'], ascending=[True, False]).drop_duplicates(['Col1']).reset_index(drop=True)) 是否可以对三列使用类似的方法?

标签: python arrays numpy max min


【解决方案1】:

试试这个:

input = np.array([[3, 11.1],[13, 22.2],[11, 33.3],[13, 44.4],[3,55.5]])
bbb = input.T
x = np.zeros(int(np.max(bbb[0]))+1)
np.maximum.at(x, np.array(bbb[0],dtype='int'), bbb[1])
np.array([[np.sort(list(set(bbb[0]))),x[np.nonzero(x)]]]).T

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2019-09-12
    • 2018-06-13
    • 2017-11-21
    • 2018-12-25
    相关资源
    最近更新 更多