Дублирование строк в Dataframe на основе шаблона в Pandas - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть датафрейм с несколькими строками. Когда шаблон найден (скажем, ;, найден только в последнем столбце), я хотел бы продублировать строку, но назначить новое значение на основе столбца. Все данные являются строками. Например:

        A     B      C
 x1     b1a   kxl    Ak
 x2     b1b   txl    Ak
 x3     b1c   uxl    Ak;Lo  #should be duplicated
 x4     b1d   ixl    Lo

Становится

        A     B      C
 x1     b1a   kxl    Ak
 x2     b1b   txl    Ak
 x3     b1c   uxl    Ak  #duplicated
 x3     b1c   uxl    Lo  #duplicated
 x4     b1d   ixl    Lo

Я пытаюсь заставить groupby('C').split(';') работать, но не нахожу эффективный способ сделать это. Как бы вы это сделали?

Конечно, быстрый и грязный способ сделать это - запустить DF строка за строкой, но это не очень эффективно, я думаю ...

1 Ответ

0 голосов
/ 25 апреля 2018

Использование:

s = df['C'].str.split(';')
df = df.iloc[np.repeat(np.arange(len(df.index)), s.str.len())]
df['C'] = np.concatenate(s)
print (df)
      A    B   C
x1  b1a  kxl  Ak
x2  b1b  txl  Ak
x3  b1c  uxl  Ak
x3  b1c  uxl  Lo
x4  b1d  ixl  Lo
  1. Первый split столбец с разделителем
  2. Для общего решения repeat массив, созданный arange длиной DataFrame с iloc
  3. Последняя замена столбца C сглаженными значениями разделенных значений
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...