Два новых столбца на основе return имеют два значения в dataframe apply

#python-3.x #pandas

#python-3.x #панды

Вопрос:

У меня есть DataFrame:

     Num
     1
     2
     3
 
 def foo(x):
    return x**2, x**3
 

Когда я сделал df['sq','cube'] = df['num'].apply(foo)
Он создает один столбец, как показано ниже:

     num    (sq,cub)
     1       (1,1)
     2       (4,8)
     3       (9,27)
 

Я хочу, чтобы эти столбцы были разделены их значениями

      num sq cub 
     1   1   1
     2   4   8
     3   9   27
 

Как я могу этого добиться …?

Ответ №1:

 obj = df['num'].apply(foo) 
df['sq'] = obj.str[0]
df['cube'] = obj.str[1]
 

Комментарии:

1. в качестве альтернативы, просто сделайте — df['sq'] = df['num']**2 amp; df['sq'] = df['num']**2 amp; df['cube'] = df['num']**3 . В этом случае нет необходимости применять.

2. @sharathnatraj Спасибо за ответ. Мой приведенный выше пример — это просто симуляция моей реальной проблемы. Таким образом, принятый ответ является решением этой проблемы.