2016-06-13 22 views
3

私はデータフレームとしてインポートするCSVファイルを持っています。このデータフレームは複数のフィルタリングステップを経ます。データは、条件に基づいて列間を移動します。既存のデータフレームの新規作成 - SettingWithCopyWarning

import numpy as np 
import pandas as pd 

df = pd.read_csv('my_csv_file.csv', names=headers) 
df2 = df.drop_duplicates(['Column_X']) 
series1 = df2.loc[df2['Column_Y'] == 'Category1', 'Column_X'] 
df2.loc[df2['Column_Y'] == 'Category1', 'Column_Z'] = series1 
... 

最後の行がコマンドプロンプトに入力された後、私はSettingWithCopyWarningを取得します。

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame. 
Try using .loc[row_indexer, col_indexer] = value instead. 

私のコードには.locを使用しています。私は、問題が新しいデータフレームとしてDF2を使用していると思わせる

df.loc[df['Column_Y'] == 'Category1', 'Column_Z'] = series1 

:エラーをスローしない次の操作を行って

答えて

1

df2df1です。代わりに.drop_duplicatesコールの最後に.copy()を入れます。

df2 = df.drop_duplicates(['Column_X']).copy() 
関連する問題