如何在python pandas中定义可变数量的列适用

时间:2018-02-12 14:34:20

标签: python pandas multiple-columns apply

我正在尝试使用apply函数将列添加到python pandas df中。 但是,要添加的列数取决于函数的输出  在apply函数中使用。

示例代码:

number_of_columns_to_be_added = 2    
def add_columns(number_of_columns_to_be_added):
         df['n1'],df['n2'] = zip(*df['input'].apply(lambda x : do_something(x, number_of_columns_to_be_added)))

有关如何以编程方式在(df['n1'], ..., df['n696969'])部分之前定义丑陋的列部分= zip( ...的任何想法吗?

1 个答案:

答案 0 :(得分:0)

我猜测mes = 'Hello!' bot.send_message(chat_id, mes) mes = 'What is your name?' bot.send_message(chat_id, mes) user.step = 'input_name' user.save() return HttpResponse('OK') if user.step == 'input_name': user.name = text mes = 'What is your city?' bot.send_message(chat_id, mes) user.step = 'input_city' user.save() return HttpResponse('OK') if user.step == 'input_city': user.city = text mes = 'What is your birthday YYYY-MM-DD.' bot.send_message(chat_id, mes) user.step = 'input_date' user.save() return HttpResponse('OK') if user.step == 'input_date': user.date_wedding = text mes = 'What is your photo?' bot.send_message(chat_id, mes) user.step = 'input_photo' user.save() return HttpResponse('OK') if user.step == 'input_photo': updates = bot.get_updates() user.photo = ([u.message.photo for u in updates if u.message.photo]) # user.photo = file_id user.save() return HttpResponse('OK') 的输出是一个元组,所以你可以试试这个:

zip

temp = zip(*df['input'].apply(lambda x : do_something(x, number_of_columns_to_be_added))) for i, value in enumerate(temp, 1): key = 'n'+str(i) df[key] = value 将保留所有条目,然后temp结束iterate以使用您的特定键将值分配给您的dict。希望这符合你原来的想法。