2016-04-29 13 views
5

İlişkili aya dönüştürmek istediğim Quarters (Q1, Q2, Q3, Q4) değerlerine sahip bir veri çerçeve sütun dönemim var (bkz. Dict). Aşağıdaki kodum, bu uyarıyı neden aldığımı merak ediyor.DataFrame'den bir dilim kopyasında bir değer ayarlanmaya çalışılıyor

DataFrame'den bir dilimin kopyasında bir değer ayarlanmaya çalışılıyor. yerine

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

cevap

5

"bir değer, bir DataFrame bir dilim bir kopyası ayarlanabilir çalışıyor" [row_indexer, col_indexer] = değer .loc kullanmayı deneyin bir uyarıdır. SO bu konuda birçok mesaj içeriyor. Pandalar 0.16'da eklenmiştir ve bu uyarının önlenmesi için iyi bir yoldur.

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 

yenileri ilave olarak tüm orijinal sütunlu yeni bir nesne (kopya) dönen bir DataFrame yeni sütunlar atayın.

.. versionadded :: 0.16.0

ben uyarı bazen yanlış gösterilmiştir önceki sürümlerinde düşünüyorum
+0

. Uyarı 0.18.0 pandasında alamıyorum. Ama atama hakkında bilgi edinmek güzel. – ayhan

İlgili konular