Python 循环将数据帧逐块转换为np数组块

Python 循环将数据帧逐块转换为np数组块,python,pandas,numpy,Python,Pandas,Numpy,是否可以使用循环将数据帧逐块转换为numpy数组。伪代码中的类似内容: counter = 0 for index, row in dataframe.iterrows(): if (row['column']) == 1 : counter += 1 if counter == 10: take the part of the dataframe where counter is <= 10 and convert it to numpy a

是否可以使用循环将数据帧逐块转换为numpy数组。伪代码中的类似内容:

counter = 0
for index, row in dataframe.iterrows():
    if (row['column']) == 1 :
        counter += 1
        if counter == 10:
 take the part of the dataframe where counter is <= 10 
 and convert it to numpy and restart the process at the next row
计数器=0
对于索引,dataframe.iterrows()中的行:
如果(行['column'])==1:
计数器+=1
如果计数器==10:

以数据帧中计数器为的部分为例,这里有几个方法可以采用,我是在您最近的评论之前开始的。根据评论,第一个方法可能对您有用,如果您稍微调整一下

基本上,您可以在块中循环通过df,并一次对每个块而不是整个df执行您想要的操作

import numpy as np
import pandas as pd
data = np.random.rand(1000,3)

df = pd.DataFrame(data)

# LOOPING BY CHUNKS, STORING EACH CHUNK IN A NP ARRAY INSIDE A LIST
ix = 0
chunk = 10
arrays = []
for iy in range(chunk, len(df)+chunk, chunk):
    arrays.append(df.iloc[ix:iy].values)
    ix = iy

# ENTIRE DF TO NP ARRAY
array = df.values

# LOOPING BY CHUNKS, APPENDING EACH CHUNK TO A SINGLE NP ARRAY
ix = 0
chunk = 10
array = np.empty((0,3))
for iy in range(chunk, len(df)+chunk, chunk):
    array = np.concatenate((array, df.iloc[ix:iy].values))
    ix = iy

这是可能的,但是你的目标是什么?我想知道你是否可以提供更多关于你的目标的细节…如果你的目标是在df上逐块循环并转换为单个numpy数组…这有什么意义?为什么不直接使用df.values呢?是否要按块对其进行转换并将块附加到同一数组中?或者块的不同数组?嗨,谢谢你的回复。实际上,我正在使用一个名为vaex的库中的一个非常大的数据集,专门为熊猫无法处理的数据集而设计。当我试图将它全部转换为numpy时,我有内存问题,因为它有数亿行。这就是为什么我想把它一点一点地转换成一个numpy数组,从这些块中,只取我想要的值(比如每个列/块的第一个和最后一个),以创建一个小得多的新数组(大约100万行或200万行)您可以修改第一种或最后一种方法来创建一个包含您想要的区块部分的np数组列表,或者创建一个只包含您想要的区块部分的新np数组。谢谢,我会试试这个!请澄清一下,ix=iy代表什么?每个循环都使用ix:iy指示中的iloc切割数据帧。。。iy由循环设置,ix从0开始。因此,第一个循环为0:10,然后ix设置为iy,因此下一个循环为10:20。。这只是为了将下一个块的开始索引重置为当前块的结束索引在调整代码一段时间后,我越来越接近我需要的结果,但我注意到,当我附加一个新数组时,它每次都以第一个元素重新启动,例如,第一个数组的长度为10个元素,第二个数组的长度为20个元素(两个10元素数组)等等……我如何让它“忘记”数组中已经放入的内容,或者从内存中删除已经处理的内容?