import pandas as pd
import numpy as np
rng = pd.date_range('1/1/2011', periods=6, freq='H')
df = pd.DataFrame({'A': [0, 1, 2, 3, 4,5],
'B': [0, 1, 2, 3, 4,5],
'C': [0, 1, 2, 3, 4,5],
'D': [0, 1, 2, 3, 4,5],
'E': [1, 2, 3, 3, 7,6],
'F': [1, 1, 3, 3, 7,6],
'G': [0, 0, 1, 0, 0,0]
},
index=rng)
一個簡單的數據幀幫我解釋一下:在新的數據幀返回第一個匹配值/列名
df
A B C D E F G
2011-01-01 00:00:00 0 0 0 0 1 1 0
2011-01-01 01:00:00 1 1 1 1 2 1 0
2011-01-01 02:00:00 2 2 2 2 3 3 1
2011-01-01 03:00:00 3 3 3 3 3 3 0
2011-01-01 04:00:00 4 4 4 4 7 7 0
2011-01-01 05:00:00 5 5 5 5 6 6 0
當我篩選的值大於2,我得到以下的輸出:
df[df >= 2]
A B C D E F G
2011-01-01 00:00:00 NaN NaN NaN NaN NaN NaN NaN
2011-01-01 01:00:00 NaN NaN NaN NaN 2.0 NaN NaN
2011-01-01 02:00:00 2.0 2.0 2.0 2.0 3.0 3.0 NaN
2011-01-01 03:00:00 3.0 3.0 3.0 3.0 3.0 3.0 NaN
2011-01-01 04:00:00 4.0 4.0 4.0 4.0 7.0 7.0 NaN
2011-01-01 05:00:00 5.0 5.0 5.0 5.0 6.0 6.0 NaN
對於每一行我想知道哪一列首先有匹配值(從左到右)。所以在2011-01-01 01:00:00
的行上,它是E行,值爲2.0。
所需的輸出:
我想獲得一個新的數據框在一個名爲「價值」列中的第一個匹配值,另一列名爲「從上校」捕獲列名是從哪裏來的。
如果看不到匹配,則從最後一列輸出(本例中爲G)。謝謝你的幫助。
"Value" "From Col"
2011-01-01 00:00:00 NaN G
2011-01-01 01:00:00 2 E
2011-01-01 02:00:00 2 A
2011-01-01 03:00:00 3 A
2011-01-01 04:00:00 4 A
2011-01-01 05:00:00 5 A
Thanks maxu!完美的作品。所以我試圖理解這一點,但掙扎。掩碼查找缺少的值。然後該函數查找掩碼的argmin,以便嘗試查找任何NaN的索引? – ade1e
@adele,很高興我能幫上忙。我已經添加了解釋部分 - 請檢查... – MaxU