У меня есть этот фрейм данных
df = pd.DataFrame({"A": [10, 10, 10, 22, 30, 30, 30, 30, 30], "B": ["a", "a", "b", "b", "b", "a", "b", "b", "b"], "C": [2, 5, 10, np.nan, 15, 20, 35, 35, 35]})
, поэтому мой фрейм данных выглядит следующим образом
Index A B C
0 10 a 2
1 10 a 5
2 10 b 10
3 22 b nan
4 30 b 15
5 30 a 20
6 30 b 35
7 30 b 35
8 30 b 35
в 3-й строке, я хотел бы вписать столбец C на основе значения встолбец C, удовлетворяющий этим условиям.
- ближайшее значение в A (включая себя). для 3-й строки самое близкое значение в A для 22 равно 30. (Если в других строках есть 22, то самое близкое значение - 22)
- то же значение в B. для 3-й строки, значение Bb.
- значение большинства в C. для 3-й строки, мы видим, что строки 4, 5, 6, 7, 8 удовлетворяют предыдущим 2 условиям, но значение большинства в C равно 35.
Таким образом, ожидаемый результат для 3-й строки в столбце C равен 35. Я могу написать коды методом грубой силы, но мне интересно, можем ли мы сделать более элегантные способы или нет.