Предположим, что у вас есть панда DataFrame
, которая содержит какие-то данные в теле и числа в именах column
и index
.
>>> data=np.array([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']])
>>> columns = [2, 4, 8]
>>> index = [10, 4, 2]
>>> df = pd.DataFrame(data, columns=columns, index=index)
>>> df
2 4 8
10 a b c
4 d e f
2 g h i
Теперь предположим, что мы хотим манипулировать кадрами данных некоторым способом, основанным на сравнении индекса и столбцов. Подумайте о следующем.
Если индекс больше столбца, заменить букву 'k':
2 4 8
10 k k k
4 k e f
2 g h i
Если индекс равен столбцу, заменить букву на «U»:
2 4 8
10 k k k
4 k U f
2 U h i
Если столбец больше индекса, заменить букву на «Y»:
2 4 8
10 k k k
4 k U Y
2 U Y Y
Чтобы вопрос был полезен для всех:
Скорость Результаты из минимального примера
Jezrael : 556 µs ± 66.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
user3471881 : 329 µs ± 11.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Гром : 4.65 ms ± 252 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Это дубликат?
Я искал в Google для pandas replace compare index column
и лучшие результаты:
Pandas - сравнивает два кадра данных и заменяет значения, соответствующие условию
Python pandas: заменить значения на основе местоположения, а не значения индекса
Pandas DataFrame: заменить все значения в столбце на основе условия
Тем не менее, я не чувствую никакого прикосновения к тому, возможно ли это a) или b) как сравнивать таким образом