Регулярное выражение, совпадающее с несколькими префиксами, распаковывается в столбцы - PullRequest
0 голосов
/ 10 сентября 2018

Любые предложения для регулярного выражения, чтобы взять эту серию

import pandas as pd
import numpy as np

data = [
    'Apple: very tasty',
    'Banana: Unpleasant',
    'Apple: quite nice  Banana: not bad either',
    '',
]

ser = pd.Series(data=data)

enter image description here

в этот результирующий DataFrame?

pd.DataFrame(data=[
    ['very tasty', np.nan],
    [np.nan, 'Unpleasant'],
    ['quite nice', 'not bad either'],
    [np.nan, np.nan],
], columns = ['Apple', 'Banana'])

enter image description here

Если Apple и Banana существуют, они всегда располагаются в порядке Apple, Banana и разделяются двойным пробелом.

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете сделать что-то вроде этого:

df_out = pd.DataFrame(df.values.reshape(-1,2),
                      index=np.repeat(np.arange(df.shape[0]),df.shape[1]//2))

df_out = pd.DataFrame ()

df = ser.str.split (': | \ s \ s', expand = True)

для n, g в df.groupby (df.columns // 2, axis = 1):

df_out = pd.concat ([df_out, pd.DataFrame (g.values)])

df_out.set_index(0, append=True)[1].unstack().dropna(1, how='all')

Выход:

         Apple           Banana
0   very tasty              NaN
1          NaN       Unpleasant
2   quite nice   not bad either
3          NaN              NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...