Как сместить числовые значения или нечисловые из столбца в Pandas - PullRequest
0 голосов
/ 22 октября 2018

, читая метод сдвига Pandas, я просто проводил некоторый тест, чтобы увидеть, есть ли в столбце dataFrame Pandas смешанные значения, такие как число и имена, и я хочу отделить его, чтобы получить число, которое будет выровнено по отдельномуновый столбец при удалении / удалении из исходного столбца.

a) Ниже мой DataFrame:

>>> df
        Name  OXA
0    SAN 109  Yes
1   KENI 122   No
2  REEMA 455  Yes

b) Я пытался с помощью shift для перемещенияномер нового фрейма данных (Nums):

>>> df['Nums'] = df['Name'].shift(-1)

>>> df
        Name  OXA       Nums
0    SAN 109  Yes   KENI 122
1   KENI 122   No  REEMA 455
2  REEMA 455  Yes        NaN

Выше Создается новый столбец как Nums, но не получается желаемый результат.

c) Мой желаемый результат будет:

        Name  OXA      Nums
0       SAN   Yes      109
1       KENI  No       122
2       REEMA Yes      455

ИЛИ и наоборот

        Name  OXA     NUMS
0       109  Yes      SAN
1       122  No       KENI
2       455  Yes      REEMA

1 Ответ

0 голосов
/ 22 октября 2018

Полагаю, вам нужно extract для извлечения столбца с помощью регулярного выражения - [a-zA-Z]+ для соответствия одному или нескольким символам, затем \s* для нуля или нескольких пробелов и \d+ для одной или нескольких цифр:

df[['Name','Nums']]  = df['Name'].str.extract('([a-zA-Z]+)\s*(\d+)')
print (df)
    Name  OXA Nums
0    SAN  Yes  109
1   KENI   No  122
2  REEMA  Yes  455

df[['NUMS','Name']]  = df['Name'].str.extract('([a-zA-Z]+)\s*(\d+)')
print (df)
  Name  OXA   NUMS
0  109  Yes    SAN
1  122   No   KENI
2  455  Yes  REEMA

Если всегда есть разделитель пробелов, используйте split:

df[['Name','Nums']]  = df['Name'].str.split(expand=True)
print (df)
    Name  OXA Nums
0    SAN  Yes  109
1   KENI   No  122
2  REEMA  Yes  455
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...