根据熊猫数据框中的最后一个值选择列

Posted

技术标签:

【中文标题】根据熊猫数据框中的最后一个值选择列【英文标题】: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,但想不出如何将列相互比较然后选择我想要的。

【问题讨论】:

【参考方案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]]

【讨论】:

你打败了我 是的,我只对列中的最后一个值感兴趣,它应该小于其他列中的值。所以你的方法并不完美) 现在工作。测试过

以上是关于根据熊猫数据框中的最后一个值选择列的主要内容,如果未能解决你的问题,请参考以下文章

如何根据列的值对熊猫数据框中的列进行分类?

根据熊猫数据框中其他列的条件和值创建新列[重复]

根据列值从熊猫数据框中提取行

如何使用熊猫根据列的值范围分离数据框?

Groupby 并根据熊猫数据框中的其他列比较/过滤特定组

用上一列中的值填充熊猫数据框中的“无”值