Добавление новых строк в pandas фрейм данных с указанием c индекса - PullRequest
0 голосов
/ 02 марта 2020

Я прочитал все ответы на мой вопрос, доступные в 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-ю строку. Я хочу выше вывод как мой окончательный вывод.

Надеюсь, я ясен. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...