2016-04-29 13 views
5

データフレームの列期間に、四半期(Q1、Q2、Q3、Q4)の値があり、関連する月に変換します)。私のコードは、なぜ私はこの警告を得ているのだろうかと思っています。データフレームのスライスのコピーに値を設定しようとしています

値は、DataFrameからスライスのコピーに設定しようとしています。 の.locを使用してみてください[row_indexer、col_indexer] =値の代わりに

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

答えて

5

「値はデータフレームからのスライスのコピーに設定されるようにしようとしていることは、」警告です。 SOにはこの件に関する多くの記事が掲載されています。

df.assignがPandas 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 

新しいものに加えて、すべての元の列に新しいオブジェクト (コピー)を返す、データフレームに新しい列を割り当てます。

は.. versionadded :: 0.16.0

+0

を私は以前のバージョンで警告が誤って時々示されていると思います。私はパンダ0.18.0で警告を得ていません。しかし、割り当てについて学ぶことは良いことです。 – ayhan

関連する問題