Pandas как разделить один столбец на два, используя разделитель - PullRequest
0 голосов
/ 31 января 2020

У меня есть кадр данных, в котором один столбец соответствует номерам кредитных карт в этой форме:

123456 ******1234* 1003 *

Я хочу создать два новых столбца: 'Первый 'и' Last ', используя sep "******"

Я пробовал:

df[['First','Last']] = df['credit_card'].str.split("******",expand=True)

и получаю:

re.error: nothing to repeat at position 0

Примечание: все значения в серии одинаковы по длине, а не NaNs

Я решил таким образом, но меня интересует более практичный и быстрый подход

for x in range(len(df)):
    df.loc[x,'bin'] = str(df.loc[x,6]).split("******")[0]
    df.loc[x,'last_four'] = str(df.loc[x,6]).split("******")[1]

1 Ответ

4 голосов
/ 31 января 2020

Разделитель обрабатывается как регулярное выражение, а * имеет специальное значение в регулярном выражении, поэтому его необходимо экранировать, чтобы совпадать буквально. Вы можете написать

df[['First','Last']] = df['credit_card'].str.split(r"\*{6}",expand=True)

{6} означает повторить шаблон 6 раз, что короче записи \*\*\*\*\*\*

...