Pandas-лямбда для разных объектов в одном столбце

#python #object #lambda #isnull

#python #объект #лямбда #isnull

Вопрос:

Для этого фрейма данных:

 import pandas as pd
df=pd.DataFrame([[2],['do-g'],['ra-t'],['ca-t'],[5]], columns=['A'])
print(df)
  

Значения в столбце ‘A’ обрабатываются как значения ‘int’. Как мне добавить новый столбец (полученный из столбца «A»), в котором из слов удален символ «-«, но числа / целые числа остаются такими, какие они есть?

Моя попытка решения:

 df['new_column']=df.A.apply(lambda x: x.replace('-') if x.isnull() else x)
  

Ответ №1:

Вы можете игнорировать нестроковые значения в вашем lambda.

 >>> df['new_column'] = df.A.apply(lambda x: x.replace('-', '') if isinstance(x,str) else x)
>>> df
      A new_column
0     2          2
1  do-g        dog
2  ra-t        rat
3  ca-t        cat
4     5          5