Создать новый столбец на основе типа данных и перенести туда данные - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть данные в этой форме:

Name      Value
Car         10
Train        X
Plane    01-01-2010
Ship         Y

Я хочу создать новые столбцы и сместить данные на основе типа:

Name      Integer  Date       Category
Car           10    NaN          NaN 
Train        NaN    NaN            X
Plane        NaN   01-01-2010    NaN
Ship         NaN    NaN            Y

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете изменить тип столбца «Значение» на str и сделать df с регулярным выражением. Тогда вам придется переименовать столбцы и изменить их типы обратно.

re_int = r'[A-Za-z]|(\d-\d-\d)'
re_letter = r'(^((?!\D).)*$)|(\d-\d-\d)'
re_date = r'(^((?!\D).)*$)|[A-Za-z]'

def nanify(df, regex):
  return(df.replace(regex, np.NaN, regex=True))

dfv = df.Value.astype(str)
df = pd.concat([df.Name, nanify(dfv, re_int), nanify(dfv, re_date), 
                nanify(dfv, re_date)], axis=1)

Возможно, существует более простой способ сделать это с помощью DataFrame.where ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...