2016-12-15 3 views
0

Я пытаюсь создать 3d-список из фреймворка pandas. Он имеет 9 столбцов и 1440 строк. Как создать список, состоящий из всех значений в строке одного значения из определенной строки и столбца, который находится отдельно от списка, в списке каждой строки (1440), составляющем трехмерный список формы (1440, 9, 1) (1440, 1, 9) наиболее эффективным способом. Вот пример данных:создать 3d-список (список списков списков) из pandas dataframe

+-------------------------------------------------------------------------------------------------------+ 
|  0   1   2   3   4   5   6  7   8   9 | 
+-------------------------------------------------------------------------------------------------------+ 
| 2429896.0 4508569.0 3908478.0 5720432.0 470717.0 894550.0 703861.0 51111.0 0.017544 59.0 | 
| 2555574.0 4740368.0 4109880.0 6021743.0 495871.0 940702.0 740383.0 1106141.0 0.058824 59.0 | 
| 2555514.0 4741014.0 4110097.0 6021093.0 494950.0 939817.0 739364.0 1104789.0 0.017544 59.0 | 
+-------------------------------------------------------------------------------------------------------+ 
+0

показать код, который вы пробовали? –

ответ

1

Вы можете использовать пару списковых:

import pandas as pd 
df = pd.DataFrame([ 
     [2429896.0, 4508569.0, 3908478.0, 5720432.0, 470717.0, 894550.0, 703861.0, 51111.0, 0.017544, 59.0], 
     [2555574.0, 4740368.0, 4109880.0, 6021743.0, 495871.0, 940702.0, 740383.0, 1106141.0, 0.058824, 59.0], 
     [2555514.0, 4741014.0, 4110097.0, 6021093.0, 494950.0, 939817.0, 739364.0, 1104789.0, 0.017544, 59.0] 
    ]) 
print([[[cell] for cell in row] for _, row in df.iterrows()]) 

Выход:

[[[2429896.0], [4508569.0], [3908478.0], [5720432.0], [470717.0], [894550.0], [703861.0], [51111.0], [0.017544000000000001], [59.0]], [[2555574.0], [4740368.0], [4109880.0], [6021743.0], [495871.0], [940702.0], [740383.0], [1106141.0], [0.058824000000000001], [59.0]], [[2555514.0], [4741014.0], [4110097.0], [6021093.0], [494950.0], [939817.0], [739364.0], [1104789.0], [0.017544000000000001], [59.0]]]
0

Там могут быть лучшие способы сделать это. Но один из способов может быть, как это:

l1=[] 
l3=[] 
l2=[] 

for a,b in df.iterrows(): 
    l1.append(b.tolist()) 

for a in l1: 
    for b in a: 
     l2.append([b]) 
    l3.append(l2) 
    l2 = [] 

print l3 

Выход:

[[[2429896.0], [4508569.0], [3908478.0], [5720432.0], [470717.0], [894550.0], [703861.0], [51111.0], [0.017544], [59.0]], [[2555574.0], [4740368.0], [4109880.0], [6021743.0], [495871.0], [940702.0], [740383.0], [1106141.0], [0.058824], [59.0]], [[2555514.0], [4741014.0], [4110097.0], [6021093.0], [494950.0], [939817.0], [739364.0], [1104789.0], [0.017544], [59.0]]] 
Смежные вопросы