首页 > 解决方案 > Python 不断增长的字典或不断增长的数据框 - 在循环中追加

问题描述

我正在尝试编写代码,在循环中从在线源收集数据,并在每次迭代中使用 pandas 操作这些数据。最初我在想我应该在循环外初始化一个字典,抓取数据,将字典转换为循环内的数据帧,然后执行我的操作。但是,制作字典而不是仅仅制作一个数据框并在循环中附加到它,这感觉很奇怪。但据我了解,pandas 并不是真正“设计”用于逐个单元更新(而是矢量化)。对此最有效的方法是什么?

import pandas as pd
    d = {'a':[], 'b':[], 'c':[], 'x':[], 'z':[]}
    for i in range(100):
        d['a'].append(f'some info {i}')
        d['b'].append(f'more info {i}')
        d['c'].append(i)
        d['x'].append(i*2)
        d['z'].append(np.nan) # ???

        df = pd.DataFrame(d)
        # Some function that does calculations on df cols and returns df with new cols
        df['z'] = 1 

标签: pythonpython-3.xpandas

解决方案


Pandas 通常用于执行数据操作和数据建模,因此每次在循环中将数据添加到数据帧可能效率低下。请注意,这在很大程度上取决于循环中的迭代次数。如果它们与数据帧的最终长度相比非常少,你当然可以这样做。否则,最好在循环内获取字典中的所有数据,当你收集完数据后,你可以将其转换为数据框进行分析,然后删除字典


推荐阅读