我正在遍历一个大型数据集,该函数的功能是从一个输入行返回多个值,如下所示:
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应该比原来的行多。
我尝试将function
和pd.Series()
中pd.DataFrame()
的返回值放入,但没有结果
错误消息是
ValueError:如果使用所有标量值,则必须传递索引
如何使用.apply()
和一个返回多个新行的函数创建一个新的DataFrame?
答案 0 :(得分:0)
您可以尝试:
new_df = pd.DataFrame(df[columns_in_question].apply(function, axis = 1).tolist())
这将创建一个列名称为0、1、2等的数据框,因为您的函数返回的键为0、1、2 ...的字典。