例如,如果我有数据框, df 就像这样
col1 col2 col3
1 2 34
11 32 32
21 62 34
31 12 31
13 82 35
11 32 33
41 32 33
我想循环3次,在每个循环中我想一个接一个地取n行,在最后一个循环中取剩下的行。所以它应该在每个循环中采用以下行
循环1
1 2 34
11 32 32
循环2
21 62 34
31 12 31
循环3
13 82 35
11 32 33
41 32 33
答案 0 :(得分:1)
使用numpy array_split
import numpy as np
num_chunks = 3
np.array_split(df,num_chunks) # this will split your array into num_chunks
您可以将新变量分配给每个块
chunk1,chunk2,chunk3 = np.array_split(df,num_chunks)
答案 1 :(得分:0)
您可以使用dataframe提供的iterrows()方法,您可以根据您的要求设置一些特定条件。对于例如我可以快速提出以下代码,虽然它可以改进,但它打印出你想要打印它的方式:
import pandas as pd
data = [[1, 2, 34],
[11, 32, 32],
[21, 62, 34],
[31, 12, 31],
[13, 82, 35],
[11, 32, 33],
[41, 32, 33]]
df = pd.DataFrame(data,columns=['col1','col2','col3'])
n = 2
count = 0
for index, row in df.iterrows():
if count == n or count == 2*n:
print("New line")
print(row['col1'], row['col2'], row['col3'])
count = count + 1
答案 2 :(得分:0)
如果您想使用循环,可以尝试以下操作:
n = 2
loop_var = [(i+n) if (i+n+n)<len(df) else len(df) for i in range(0, len(df)-1, n)]
start = 0
for i in loop_var:
print(df[start:i])
start = i
结果:
col1 col2 col3
0 1 2 34
1 11 32 32
col1 col2 col3
2 21 62 34
3 31 12 31
col1 col2 col3
4 13 82 35
5 11 32 33
6 41 32 33