使用在熊猫中返回多个行和值的函数apply()

时间:2020-10-05 09:26:49

标签: pandas dataframe apply

我正在遍历一个大型数据集,该函数的功能是从一个输入行返回多个值,如下所示:

def function(row):
  res_dict= {} 
  for i in range(row[n_Steps]):
     val1 = row["val1"]
     val2 = row["val2"]
     val3 = otherfunction(val1, val2)
     res_dict[i] = {"val1":val1, "val2":val2, "val3":val3}  
  return res_dict

然后我将此功能与熊猫.apply()一起使用:

new_df = pd.DataFrame()
new_df = df[columns_in_question].apply(function)

新的DataFrame应该比原来的行多。

我尝试将functionpd.Series()pd.DataFrame()的返回值放入,但没有结果

错误消息是

ValueError:如果使用所有标量值,则必须传递索引

如何使用.apply()和一个返回多个新行的函数创建一个新的DataFrame?

1 个答案:

答案 0 :(得分:0)

您可以尝试:

new_df = pd.DataFrame(df[columns_in_question].apply(function, axis = 1).tolist())

这将创建一个列名称为0、1、2等的数据框,因为您的函数返回的键为0、1、2 ...的字典。