根据熊猫数据框中的最后一个值选择列
Posted
技术标签:
【中文标题】根据熊猫数据框中的最后一个值选择列【英文标题】:Select columns based on last value in pandas dataframe 【发布时间】:2021-11-30 21:54:44 【问题描述】:我以下面的数据框为例。我想遍历每个wag
数字并根据其最后一个值仅选择列A
或B
。例如,如果我们查看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]]
【讨论】:
你打败了我 是的,我只对列中的最后一个值感兴趣,它应该小于其他列中的值。所以你的方法并不完美) 现在工作。测试过以上是关于根据熊猫数据框中的最后一个值选择列的主要内容,如果未能解决你的问题,请参考以下文章