2017-09-23 125 views
0

例如,如果我有一個數據幀,DF這樣分割數據幀分成多個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

這是一個基本的編程東西,它沒有任何關係'pandas'。你爲此寫了什麼代碼,請告訴我們 –

回答

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) 
+0

我該如何使用循環來做到這一點?可能是通過分割df的大小? – asdlfkjlkj

+2

爲什麼你在乎使用循環? – alexis

0

您可以使用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 
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