Я прочитал все ответы на мой вопрос, доступные в stackoverflow, но мой вопрос мало отличается от доступных ответов. У меня очень большой фрейм данных, и некоторая часть этого фрейма выглядит следующим образом:
Input Dataframe is like
A B C D
0 foot 17/1: OGChan_2020011717711829281829281 , 7days ...
1 arm this will processed after ;;;
2 leg go_2020011625692400374400374 16/1: Id Imerys_2020011618188744093744093
3 head xyziemen_2020011510691787006787006 en_2020011510749462801462801 ;;;
: : : :
В этом фрейме данных я сначала извлекаю идентификаторы из столбца B на основе некоторого регулярного выражения. Некоторые строки столбца B могут содержать эти идентификаторы, а некоторые - нет, а некоторые строки столбца B могут быть пустыми. Ниже приведен код -
df = pd.read_excel("Book1.xlsx", "Sheet1")
dict= {}
for i in df.index:
j = str(df['B'][i])
if(re.findall('_\d{25}', j)):
a = re.findall('_\d{25}', j)
print(a)
dict[i] = a
Регулярное выражение начинается с _ (подчеркивание) и 25 цифр. Примером вышеупомянутого df являются _2020011618188744093744093, _2020011510749462801462801 et c ..
Теперь я хочу вставить эти идентификаторы в столбец D конкретной строки. Например, если два идентификатора находятся в 0-й строке, то первый идентификатор должен быть вставлен в 0-ю строку столбца D, а второй идентификатор должен быть вставлен в 1-ю строку столбца D, а все содержимое кадра данных должно быть смещено вниз. То, что я хочу, будет ясно из следующего вывода. Я хочу, чтобы мой вывод был следующим, основанным на приведенном выше вводе.
A B .. D
0 foot 17/1: OGChan_2020011717711829281829281 ,7days _2020011717711829281829281
1 arm this will processed after
2 leg go_2020011625692400374400374 16/1: _2020011625692400374400374
Id Imerys_2020011618188744093744093
3 _2020011618188744093744093
4 head xyziemen_2020011510691787006787006 _2020011510691787006787006
en_2020011510749462801462801
5 _2020011510749462801462801
: : : :
В приведенном выше выводе 1 идентификатор находится в 0-й строке. Поэтому столбец D 0-й строки содержит этот идентификатор. Идентификатор не найден по первому индексу. Таким образом, столбец D 1-го индекса пуст. Во втором указателе есть два идентификатора. Следовательно, первый идентификатор помещается во 2-й строке столбца D, а второй идентификатор размещается в 3-й строке столбца D, и он сдвигает предыдущее содержимое третьей строки в 4-ю строку. Я хочу выше вывод как мой окончательный вывод.
Надеюсь, я ясен. Заранее спасибо