Chciałbym utworzyć DF z listy, że pierwsza 5 wartość powinna być w kolumnie A, a następnie następnej 5 wartości w innej kolumnie itp., Każdy ma jakiś pomysł? Poniżej znajduje się kod. Dziękuję Ci.

print (test_1)
['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', 1279', '1228', '1299', '1162', '1285', '1079', '1197', '1250', '1249', '1385', '1216', '1201', '1320', '1228', '1241', '1232', '1200', '1213', '1224', '1070','1224', '1070'...]

df = pd.DataFrame(np.array(test_1).reshape(22,5), columns = list("abcde"))
print (df)
      a     b     c     d     e     
0     01    02    03    04    05
0     06    07    08    09    10    
1   1279  1228  1299  1162  1285  
3   1079  1197  1250  1249  1385  

Pożądane wyjście:

print (df)
      a     b     c     d     e     
0     01  1279  ...   ...   ...    
1     02  1228  ...   ...   ...    
2     03  1299  ...   ...   ...  
3     04  1162  ...   ...   ...  
4     05  1285  ...   ...   ...    
5     06  1079  ...   ...   ... 
6     07  1197  ...   ...   ... 
7     08  1250  ...   ...   ... 
8     09  1249  ...   ...   ...  
9     10  1385  ...   ...   ...
0
Tyson 4 czerwiec 2018, 13:08

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć reshape(5,-1).T gdzie -1 reprezentuje nową oś:

df = pd.DataFrame(np.array(li).reshape(5,-1).T, columns = list("abcde"))

Nie używaj list jako nazwa zmiennej.

2
Bharath 4 czerwiec 2018, 10:17

Możesz użyć ze zrozumienia słownika. Oto przykład, w którym lst ma 30 elementów (a zatem 3 kolumny).

lst = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10',
       '1279', '1228', '1299', '1162', '1285', '1079', '1197', '1250', '1249', '1385',
       '1216', '1201', '1320', '1228', '1241', '1232', '1200', '1213', '1224', '1070',]

col_size = len(lst)//3

df = pd.DataFrame({col: lst[col_size*i: col_size*(i+1)]
                   for i, col in enumerate('abc')})

print (df)

    a     b     c
0  01  1279  1216
1  02  1228  1201
2  03  1299  1320
3  04  1162  1228
4  05  1285  1241
5  06  1079  1232
6  07  1197  1200
7  08  1250  1213
8  09  1249  1224
9  10  1385  1070
2
jpp 4 czerwiec 2018, 10:32

Posługiwać się:

df = pd.DataFrame(np.array(L).reshape(5, 22).T, columns = list("abcde"))
2
jezrael 4 czerwiec 2018, 10:31