【问题标题】:Select columns based on last value in pandas dataframe根据熊猫数据框中的最后一个值选择列
【发布时间】:2021-11-30 21:54:44
【问题描述】:

我以下面的数据框为例。我想遍历每个wag 数字并根据其最后一个值仅选择列AB。例如,如果我们查看wag == 1 那么A 的最后一个值== 3 而B 的最后一个值== 34 那么我只对A 列感兴趣,因为它的值较小等等通过所有wags。最后,我想要一个如下列表:

foo_list = [[10, 8, 7, 3], [15, 12, 5], [1, 2, 2, 1]]

import pandas as pd

foo = pd.DataFrame({
                    'wag' : [1, 1, 1, 1, 44, 44, 44, 56, 56, 56, 56],
                     'A' :  [10, 8, 7, 3, 13, 22, 18, 43, 40, 38, 12],
                     'B' : [55, 48, 37, 34, 15, 12, 5, 1, 2, 2, 1]
                     })

实际上,不仅可以像我展示的那样比较 2 列,还可以比较多列。并且我一直需要存储在列表列中,并且在其他列中具有最小的最后一个值。我想过for loop,但想不出如何将列相互比较然后选择我想要的。

【问题讨论】:

    标签: python pandas loops conditional-statements


    【解决方案1】:

    对于每个组,获取最小的最后一个值并将此列转换为列表,这里将wag 设置为首先索引以处理所有其他列,例如A,B

    f = lambda x: list(x.loc[:, x.iloc[-1].idxmin()])
    L = foo.set_index('wag').groupby('wag', sort=False).apply(f).tolist()
    print (L)
    [[10, 8, 7, 3], [15, 12, 5], [1, 2, 2, 1]]
    

    【讨论】:

    • 你打败了我
    • 是的,我只对列中的最后一个值感兴趣,它应该小于其他列中的值。所以你的方法并不完美)
    • 现在工作。测试过
    猜你喜欢
    • 2015-08-15
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2015-10-23
    相关资源
    最近更新 更多