Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 填写熊猫和#xB4中的列;包含另一列数据的数据框_Python_Pandas_Dataframe_Pycharm_Out Of Memory - Fatal编程技术网

Python 填写熊猫和#xB4中的列;包含另一列数据的数据框

Python 填写熊猫和#xB4中的列;包含另一列数据的数据框,python,pandas,dataframe,pycharm,out-of-memory,Python,Pandas,Dataframe,Pycharm,Out Of Memory,因此,我从SQL数据库下载了大量数据,并将其写入PyCharm中的数据帧中。基于一列中的数据,我需要创建更多列并将它们添加到数据框中。在执行此操作时,我遇到一个内存错误“无法分配形状为(x,91000)且数据类型为int32的数组”-x总是介于200和400之间。我搜索了内存错误,并且已经更改了“vm选项”,因此PyCharm有更多可用内存-我仍然得到内存错误 所以我想我需要改变我的代码。我通过以下代码创建新列: list = pd.unique(df['name']) list.sort()

因此,我从SQL数据库下载了大量数据,并将其写入PyCharm中的数据帧中。基于一列中的数据,我需要创建更多列并将它们添加到数据框中。在执行此操作时,我遇到一个内存错误“无法分配形状为(x,91000)且数据类型为int32的数组”-x总是介于200和400之间。我搜索了内存错误,并且已经更改了“vm选项”,因此PyCharm有更多可用内存-我仍然得到内存错误

所以我想我需要改变我的代码。我通过以下代码创建新列:

list = pd.unique(df['name'])
list.sort()

for idx in list:
    col1 = '%s Col1' % idx
    df[col1] = np.int32(0)
    df.loc[(df['name'].values == idx ) & (df['level'].values == 4), col1] = df.loc[(df['name'].values == idx ) & (df['level'].values == 4), 'xyz']
我正在为每个唯一名称的7个新列执行此操作。我在过去几天做了很多研究,据我所知,python首先创建了我的数据帧的副本,然后用我的条件过滤数据帧,最后过滤后的数据被移动到原始数据帧。数据帧副本的分配造成我的内存错误(我猜)

问题是:在没有数据帧拷贝的情况下,是否可以在原地做同样的事情?
我想这会修复我的记忆错误。

你考虑过将它们分块处理吗?我考虑过。但我从未尝试过,因为后来,我要在整个数据框中搜索ID。也许我会尝试拆分框架,只是为了创建新的列。是的,我建议这样做。这对减少内存使用有很大帮助。:)你有没有考虑过把它们分块处理?我有。但我从未尝试过,因为后来,我要在整个数据框中搜索ID。也许我会尝试拆分框架,只是为了创建新的列。是的,我建议这样做。这对减少内存使用有很大帮助。:)