2012-08-04 71 views
17

Tôi có một đối tượng dataframe gấu trúc trông như thế này:Làm cách nào để tạo danh sách từ DataFrame gấu trúc có tên cột và giá trị cột?

one two three four five 
0 1 2  3  4  5 
1 1 1  1  1  1 

Tôi muốn tạo ra một danh sách liệt kê các đối tượng mà mục đầu tiên là nhãn cột và các giá trị danh sách còn lại là các giá trị dữ liệu cột:

nested_list = [['one', 1, 1] 
       ['two', 2, 1] 
       ['three', 3, 1] 
       ['four', 4, 1] 
       ['five', 5, 1]] 

Tôi làm cách nào để thực hiện việc này? Cảm ơn đã giúp đỡ.

Trả lời

34

Cách đơn giản nhất có thể là list(dt.T.itertuples()) (trong đó dt là khung dữ liệu của bạn). Điều này tạo ra một danh sách các bộ dữ liệu.

+0

Cảm ơn! Tôi không biết về itertuples(). – turtle

+1

Tôi cũng không nhận ra các lần lặp lại ở đó ... - thanh lịch +1 –

+3

Tạo danh sách các bộ dữ liệu mặc dù không phải danh sách các danh sách – Joop

3

Cách tiếp cận ngây thơ của tôi sẽ sử dụng lặp lại với 'll' dưới dạng danh sách các danh sách và l dưới dạng một danh sách.

df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] }) 

ll = [] 

for idx,row in df.iteritems(): 
    l = row.values.tolist() 
    l.insert(0,idx) 
    ll.append(l) 
9

@BrenBarn câu trả lời ở trên đưa ra danh sách các bộ không phải là danh sách danh sách được hỏi. Tôi đặc biệt cần một danh sách các danh sách để có thể viết các khung dữ liệu vào spreadsheed bằng cách sử dụng DataNitro. Phỏng theo ví dụ trên với danh sách hiểu:

[list(x) for x in dt.T.itertuples()] 

Điều này mang lại kết quả khi cần thiết

5

Nói đúng ra nếu bạn muốn danh sách lồng nhau (và không phải là một danh sách các hàng), bạn có thể làm

df.values.tolist() 

như df.values ​​là một mảng numpy. Điều đó sẽ cung cấp cho bạn danh sách các danh sách theo yêu cầu:

[[0.0001313652121930252, 3.5915356549999985e-05], 
[3.5915356549999985e-05, 0.00011634321240684215]] 
0

Câu hỏi cũ tôi biết, nhưng điều này có ý nghĩa hơn với tôi so với các câu trả lời khác.

Nếu đây là dataframe của bạn:

df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1], 
      'five': [5, 1], 'two': [2, 1]}, 
      columns=['one', 'two', 'three', 'four', 'five']) 

Làm điều này:

df.T.reset_index().values.tolist() 

quả

[['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]] 
Các vấn đề liên quan