У меня такого рода dataframe

df.Product_ID
0       FDP37
1       FDI04
2       FDV02
3       FDT55
4       FDG21
        ...  
4135    FDD08
4136    DRA59
4137    FDK46
4138    FDD09
4139    FDO22

Как мне разделить первые 2 элемента на 2 столбца

Скажем, я хочу, чтобы результат был таким

0       FD    P37
1       FD    I04
2       FD    V02
3       FD    T55
4       FD    G21

Я пытался прочитать и понять txt.split () https://www.w3schools.com/python/ref_string_split.asp но он показывает какой-то разделитель, например "" или "," сравнивается с тем, что у меня выше, без разделителя

0
zizamuft 21 Авг 2021 в 16:19

3 ответа

Лучший ответ

Нарезка может быть быстрее, но вот альтернатива регулярному выражению:

print (df["Product_ID"].str.extract("(?P<Product_ID_FD>.{2})(?P<Product_ID_LD>.*)"))

     Product_ID_FD Product_ID_LD
0               FD           P37
1               FD           I04
2               FD           V02
3               FD           T55
4               FD           G21
4135            FD           D08
4136            DR           A59
4137            FD           K46
4138            FD           D09
4139            FD           O22
1
Henry Yik 21 Авг 2021 в 14:21

Вы можете обратиться к .str текстового столбца pandas. df.assign аналогичен назначению двух раз для двух столбцов. Это синтаксический сахар

import pandas as pd

df = pd.DataFrame({'Product_ID': {0: 'FDP37', 1: 'FDP37', 2: 'FDP37', 3: 'FDP37', 4: 'FDP37'}})

df = df.assign(first_two=df.Product_ID.str[:2], from_two=df.Product_ID.str[2:])

# Also pass as dictionary with unwrapping for more general
# kwargs = {'first_two': df.Product_ID.str[:2], 'from_two': df.Product_ID.str[2:]}
# df.assign(**kwargs)

print(df)

1
eroot163pi 21 Авг 2021 в 13:53

Попробуй это:

import pandas as pd

df = pd.DataFrame({'Product_ID': {0: 'FDP37', 1: 'FDP37', 2: 'FDP37', 3: 'FDP37', 4: 'FDP37'}})

df['Product_ID_FD'] = [p[:2] for p in df['Product_ID']]
df['Product_ID_LD'] = [p[2:] for p in df['Product_ID']]
# OR
df['Product_ID_FD'] , df['Product_ID_LD'] = [p[:2] for p in df['Product_ID']] , [p[2:] for p in df['Product_ID']]

df

Выход:

enter image description here

0
user1740577 21 Авг 2021 в 14:07