Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 一个接一个地构造一行并将其添加到最终数据帧的更干净的方法?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 一个接一个地构造一行并将其添加到最终数据帧的更干净的方法?

Python 3.x 一个接一个地构造一行并将其添加到最终数据帧的更干净的方法?,python-3.x,pandas,Python 3.x,Pandas,我有大型Excel文件,其中包含对对象的观察。我通过pandas读取文件,对它们进行分组,然后对每组进行迭代。对于每一组,我都会计算特定且相当复杂的结果——比如结果1、结果2和可选结果3。 我用预定义的列定义一个空df,在其中插入我的计算值。最后,我将所有df合并为一个最终df。 也许最好用代码来解释: data=pd.read\u excel() grouped=data.groupby('obj_id')) 列=['result1'、'result2'、'result3'] 组合结果=pd.

我有大型Excel文件,其中包含对对象的观察。我通过pandas读取文件,对它们进行分组,然后对每组进行迭代。对于每一组,我都会计算特定且相当复杂的结果——比如结果1、结果2和可选结果3。 我用预定义的列定义一个空df,在其中插入我的计算值。最后,我将所有df合并为一个最终df。 也许最好用代码来解释:

data=pd.read\u excel()
grouped=data.groupby('obj_id'))
列=['result1'、'result2'、'result3']
组合结果=pd.DataFrame(列=列)
对于obj_id,obj_df在分组中:
obj_results=pd.DataFrame(列=列,索引=[0])
#创建一个全NaN行的空df
obj_结果['result1']=fooCalculation(obj_df)
obj_结果['result2']=fooCalculation(obj_df)
组合结果=组合结果。追加(obj结果,排序=False)
我喜欢我当前的方法,因为如果可选列最终没有值,那么col仍然存在,因为它最初被设置为NaN。这样,我可以逐个计算每个对象的结果值,并在更新后立即更新df行

我忍不住想,这不是最干净的方式。特别是因为obj_results['result1']=fooCalculation()设置了整个列,而我错误地使用它设置了一个值

这里最干净/最好的做法是什么。 我是否应该将结果“缓存”在dict中并将其插入合并结果