【问题标题】:get the minimum of a column value based on other columns value根据其他列值获取列值的最小值
【发布时间】:2021-02-11 08:27:14
【问题描述】:

我正在尝试根据具有编码的列的最小值获取整行

Df:

colA    colB    colC
    A   B   2
    B   C   3
    C   D   4
    D   E   5
    E   A   2
    A   A   0
    B   B   0
    C   C   0
    D   D   0
    E   E   0

试图以最快的方式获取 colC 为最小整数但 colA 和 colB 不相等的整行

输出:

A   B   2
E   A   2

【问题讨论】:

    标签: python-3.x pandas dataframe pandas-groupby


    【解决方案1】:

    您可以先过滤掉不同的列,然后排序并获得最低的 2 个值:

    df1 = df[df['colA'].ne(df['colB'])].sort_values('colC').head(2)
    

    对于所有其他行,按索引从原始行中删除行:

    df2 = df.drop(df1.index)
    
    print (df1)
      colA colB  colC
    0    A    B     2
    4    E    A     2
    
    print (df2)
      colA colB  colC
    1    B    C     3
    2    C    D     4
    3    D    E     5
    5    A    A     0
    6    B    B     0
    7    C    C     0
    8    D    D     0
    9    E    E     0
    

    【讨论】:

    • 我们可以使用 numpy 做到这一点吗?
    • @pylearner - 嗯,有整数列的刺,所以更复杂。 DataFrame 很大?
    • 是的,df 很大
    • @pylearner - 你现在可以测试解决方案了吗? df1 是 2 最小值,df2 是另一个值。
    • @pylearner - 然后将下一个条件 df['colA'].ne(df['colB']) 添加到 df['colA'].ne(df['colB']) & df['colB'].ne('E')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2014-04-23
    • 1970-01-01
    • 2021-11-25
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多