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)
Простой dataframe, чтобы помочь мне объяснить:Возврат первое совпадающее значение/имя столбца в новом dataframe
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.
Желаемая выход:
Что я хотел бы получить новый dataframe с первым значением матча в столбце «Значение» и другой колонке под названием «От Col», который захватывает это имя столбца.
Если совпадение не видно, то вывод из последнего столбца (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
Спасибо maxu! Работает отлично. Поэтому я пытаюсь понять это, но боюсь. Маска ищет отсутствующие значения. Затем функция ищет argmin маски, поэтому пытается найти индекс любого NaN? – ade1e
@adele, рад, что я мог бы помочь.Я добавил раздел объяснения - пожалуйста, проверьте ... – MaxU