2016-04-29 13 views
5

से एक टुकड़ा की प्रति पर सेट करने का प्रयास कर रहा है मेरे पास डेटाफ्रेम कॉलम अवधि है जिसमें क्वार्टर (Q1, Q2, Q3, Q4) के मान हैं जिन्हें मैं संबंधित माह में परिवर्तित करना चाहता हूं (dict देखें)। नीचे मेरा कोड काम करता है हालांकि मुझे यह चेतावनी क्यों मिल रही है।एक मान डेटाफ्रेम

एक मान डेटाफ्रेम से एक टुकड़ा की एक प्रति पर सेट करने का प्रयास कर रहा है। [row_indexer, col_indexer] = मूल्य .loc उपयोग करने के बजाय

quarter = {"Q1":"Mar","Q2":"Jun","Q3":"Sep","Q4":"Dec"} 
df['period'] = df['period'].astype(str).map(quarter) 

उत्तर

5

"एक मूल्य एक DataFrame से एक टुकड़ा की एक प्रति पर सेट किया जा करने की कोशिश कर रहा है" का प्रयास एक चेतावनी है। इसलिए इस विषय पर कई पोस्ट हैं।

df.assign पांडस 0.16 में जोड़ा गया था और यह चेतावनी से बचने का एक अच्छा तरीका है।

quarter = {"Q1": "Mar", "Q2": "Jun", "Q3": "Sep", "Q4": "Dec"} 
df = pd.DataFrame({'period': ['Q1', 'Q2', 'Q3', 'Q4', 'Q5'], 'qtr': [1, 2, 3, 4, 5]}) 

df 
    period qtr 
0  Q1 1 
1  Q2 2 
2  Q3 3 
3  Q4 4 
4  Q5 5 

df = df.assign(period=[quarter.get(q, q) for q in df.period]) 

# Unmapped values unchanged. 
>>> df 
    period qtr 
0 Mar 1 
1 Jun 2 
2 Sep 3 
3 Dec 4 
4  Q5 5 

df = pd.DataFrame({'period': ['Q1', 'Q2', 'Q3', 'Q4', 'Q5'], 'qtr': [1, 2, 3, 4, 5]}) 
df = df.assign(period=df.period.map(quarter)) 

# Unmapped values get `NaN`. 
>>> df 
    period qtr 
0 Mar 1 
1 Jun 2 
2 Sep 3 
3 Dec 4 
4 NaN 5 

, एक DataFrame में नए कॉलम निरुपित नए लोगों के अलावा सभी मूल स्तंभों के साथ एक नई वस्तु (एक प्रतिलिपि) लौटने।

.. versionadded :: 0.16.0

+0

मैं पिछले संस्करणों में लगता है कि चेतावनी गलत तरीके से कभी कभी दिखाया गया है। मुझे पांडा 0.18.0 में चेतावनी नहीं मिल रही है। लेकिन असाइन करने के बारे में जानने के लिए अच्छा है। – ayhan

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