我在下面有一個資料框作為示例。我想遍歷每個wag數字并僅選擇列A或B基于其最后一個值。例如,如果我們查看wag== 1 那么最后一個值為A== 3 而最后一個值為B== 34 那么我只對 column 感興趣,A因為它的值是 less 等等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,但想不出如何將列相互比較,然后選擇我想要的。
uj5u.com熱心網友回復:
對于每個組,獲取最小的最后一個值并將此列轉換為串列,此處設定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]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315526.html
下一篇:列式計算
