Есть несколько существующих вопросов, похожих на этот, но ответы трудно понять, и ни один из них, кажется, не делает то, что я хочу.
У меня есть фрейм данных со многими строками и одним столбцом, включаяСтрока со значением заполнителя, которую я хочу заменить:
old = pd.DataFrame(['A','B','placeholder','C','D'],index=[0,1,2,3,4])
У меня есть второй кадр данных того же формата, который я хочу вставить в местоположение заполнителя:
new = pd.DataFrame(['E','F'],index=[0,1])
Конечный результат должен выглядеть следующим образом:
0
0 A
1 B
2 E
3 F
4 C
5 D
Я могу получить индекс строки заполнителя:
ind = old.index[old[0]=='placeholder']
На основании других вопросов, подобных этому, я подумал следующеекод должен делать то, что я хочу:
old.loc[ind] = new
Но это не так, он просто заменяет заполнитель на NaN.Затем я попытался изменить индексы в новом фрейме данных, чтобы они находились между строками, которые я хочу заменить:
new = pd.DataFrame(['E','F'],index=[2,2.5])
Это именно то, что я хочу, но проблема в том, что я не знаю, как автоматизироватьназначение индекса.Реальные рамки данных, с которыми я работаю, огромны и уже имеют индексы на основе 0, поэтому мне нужно изменить исходные индексы new
на что-то вроде:
np.arange(ind, ind+1, 1/len(new))
Но здесь я нахожусь в тупикедва аспекта:
Как преобразовать ind
(индекс заполнителя) в формат, который я действительно могу использовать?В настоящее время это Int64Index
, поэтому я не могу использовать его для np.arange()
, а ind.astype(float)
, похоже, ничего не делает.
Как только у меня есть список новыхиндексы, как я могу заменить существующие индексы в new
новыми индексами?
Или, существует ли более эффективный подход полностью?Спасибо!