Создайте df из списка (заполните до n-го числового значения в один столбец, затем продолжите ..) в пандах - PullRequest
0 голосов
/ 04 июня 2018

Хотелось бы создать df из списка, в котором первые 5 значений должны быть в столбце a, затем следующие 5 значений в другом столбце и т. Д. У кого-нибудь есть идеи?Ниже приведен код.Спасибо.

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  

Желаемый вывод:

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  ...   ...   ...

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Использование:

df = pd.DataFrame(np.array(L).reshape(5, 22).T, columns = list("abcde"))
0 голосов
/ 04 июня 2018

Вы можете использовать словарь понимания.Вот пример, где lst имеет 30 элементов (и, следовательно, 3 столбца).

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
0 голосов
/ 04 июня 2018

Вы можете использовать reshape(5,-1).T, где -1 представляет новую ось:

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

Не используйте list в качестве имени переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...