2013-10-25 31 views
32

Tôi có một khung dữ liệu gấu trúc như thế này:Chuyển đổi một hàng trong gấu trúc vào danh sách

admit gpa gre rank 
0 3.61 380  3 
1 3.67 660  3 
1 3.19 640  4 
0 2.93 520  4 

Bây giờ tôi muốn có được một danh sách các hàng trong gấu trúc như:

[[0,3.61,380,3], [1,3.67,660,3], [1,3.19,640,4], [0,2.93,520,4]] 

Làm thế nào tôi có thể làm nó? làm ơn giúp tôi. Cảm ơn rất nhiều.

Trả lời

45

Bạn có thể đạt được điều này bằng iterrows:

temp=[] 

for row in df.iterrows(): 
    index, data = row 
    temp.append(data.tolist()) 

Hoặc bạn cũng có thể sử dụng apply:

df.apply(lambda x: x.tolist(), axis=1) 

Cập nhật

Sau khi xem xét này một lần nữa có được tích hợp sẵn trong phương pháp đó cũng là phương pháp nhanh nhất, gọi số tolist trên số .values np mảng:

In [62]: 
df.values.tolist() 

Out[62]: 
[[0.0, 3.61, 380.0, 3.0], 
[1.0, 3.67, 660.0, 3.0], 
[1.0, 3.19, 640.0, 4.0], 
[0.0, 2.93, 520.0, 4.0]] 
+0

Downvoter quan tâm để giải thích – EdChum

+0

đúng, những downvotes thường làm cho tôi nghĩ rằng tôi bị mất một cái gì đó trong câu trả lời của tôi. Hy vọng rằng không phải là trường hợp bây giờ. –

+1

@RomanPekar Tôi không nghĩ như vậy, tôi đã bình chọn câu trả lời của bạn một thời gian trước đây, tôi luôn luôn yêu cầu một lời giải thích, đôi khi tôi nhận được một phản ứng, đôi khi các downvoting nối tiếp được đảo ngược. Rất nhiều thời gian không có gì xảy ra, nó chỉ là một cái gì đó xảy ra mỗi bây giờ và sau đó, không phải là một việc lớn – EdChum

19

bạn có thể làm điều đó như thế này:

map(list, df.values) 
4

Bạn có thể sử dụng được xây dựng trong as_matrix phương pháp trên dataframe (tham khảo: 1):

In [8]: 
df.as_matrix() 

Out[8]: 
array([[ 0.9, 7. , 5.2, ..., 13.3, 13.5, 8.9], 
    [ 0.9, 7. , 5.2, ..., 13.3, 13.5, 8.9], 
    [ 0.8, 6.1, 5.4, ..., 15.9, 14.4, 8.6], 
    ..., 
    [ 0.2, 1.3, 2.3, ..., 16.1, 16.1, 10.8], 
    [ 0.2, 1.3, 2.4, ..., 16.5, 15.9, 11.4], 
    [ 0.2, 1.3, 2.4, ..., 16.5, 15.9, 11.4]]) 
Các vấn đề liên quan