2014-04-29 22 views
18

Tôi có một DataFrame gấu trúc, ví dụ:Làm cách nào để "bỏ hoàn toàn" các cột cụ thể khỏi DataFrame gấu trúc?

x = DataFrame.from_dict({'farm' : ['A','B','A','B'], 
         'fruit':['apple','apple','pear','pear'], 
         '2014':[10,12,6,8], 
         '2015':[11,13,7,9]}) 

ví dụ:

2014 2015 farm fruit 
0 10 11 A apple 
1 12 13 B apple 
2  6  7 A pear 
3  8  9 B pear 

Làm thế nào tôi có thể chuyển nó sang này:

farm fruit value year 
0 A apple  10 2014 
1 B apple  12 2014 
2 A pear  6 2014 
3 B pear  8 2014 
4 A apple  11 2015 
5 B apple  13 2015 
6 A pear  7 2015 
7 B pear  9 2015 

Tôi đã thử stackunstack nhưng chưa thể thực hiện được.

Cảm ơn!

+0

Melt là một tên tuyệt vời cho chức năng này – kbball

Trả lời

20

Điều này có thể được thực hiện với pd.melt():

# value_name is 'value' by default, but setting it here to make it clear 
pd.melt(x, id_vars=['farm', 'fruit'], var_name='year', value_name='value') 

Kết quả:

farm fruit year value 
0 A apple 2014  10 
1 B apple 2014  12 
2 A pear 2014  6 
3 B pear 2014  8 
4 A apple 2015  11 
5 B apple 2015  13 
6 A pear 2015  7 
7 B pear 2015  9 

[8 rows x 4 columns] 

Tôi không chắc chắn cách chung "tan chảy" là như tên cho các loại hình hoạt động, nhưng đó là những gì nó được gọi trong gói reshape2 của R, có lẽ đã lấy cảm hứng từ tên ở đây.

+0

Fantastic - cảm ơn! –

+0

Tên vô cùng dễ dàng và tuyệt vời - tan chảy! Cảm ơn rất nhiều! – kbball

Các vấn đề liên quan