2014-04-29 2 views
18

मैं एक पांडा DataFrame है, उदाहरण के लिए:मैं पांडा डेटाफ्रेम से विशिष्ट कॉलम कैसे "अनपिवॉट" कर सकता हूं?

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

अर्थात्:

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

मैं इसे कैसे यह करने के लिए परिवर्तित कर सकते हैं?

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 

मैं stack और unstack की कोशिश की है, लेकिन यह काम करने के लिए सक्षम है।

धन्यवाद!

+0

पिघल इस समारोह के लिए एक शानदार नाम है – kbball

उत्तर

20

यह 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') 

परिणाम:

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] 

मुझे यकीन है कि कैसे आम "पिघल" ऑपरेशन के इस प्रकार के लिए नाम के रूप में है नहीं कर रहा हूँ, लेकिन वो क्या है इसे आर के reshape2 पैकेज में बुलाया जाता है, जो शायद यहां नाम को प्रेरित करता है।

+0

शानदार - धन्यवाद! –

+0

अविश्वसनीय रूप से आसान और भयानक नाम - पिघल गया! आपका बहुत बहुत धन्यवाद! – kbball

संबंधित मुद्दे