2017-01-09 21 views
0

pandasデータフレーム内の列に欠損値を更新しようとしていますが、その方法に関する警告が表示されています。私が提案に変更するとき、私はまだ同じエラーを取得します。私はパンダで叫ばないために何ができますか?pandasデータフレームを正しく更新してください

初の試み:

df['column1'].fillna(inplace=True, value='Low') 

まず応答:

/usr/local/bin/python3.5/site-packages/pandas/core/indexing.py:3295: 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 

第二の試み:

df.loc[df['column1'].isnull(), 'column1'] = 'Low' 

秒の応答:

/usr/local/bin/python3.5/site-packages/pandas/core/generic.py:476: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame 
+0

'.replace()'を使ってみましたか?基本的に: 'numpyをnpとしてインポートする。 df.replace({'column1:{np.nan:' Low '}'}、inplace = True) '? – Abdou

+1

どのように 'df'を手に入れましたか? 'df'自体が他のDataFrameをスライスして作成されたため、警告が表示されている可能性があります。 – BrenBarn

+0

@BrenBarn =私はbig_dfのサブセットからdfをビルドします。 'df = big_df [big_df ['columnA'] == 'X']' – mikebmassey

答えて

1

あなたのコメントに基づいて、big_dfをスライスして作成するdfのように聞こえます。これが警告の理由です。 dfを変更することが、それが一部であるbig_dfに影響を与えるかどうか不安があるため、DataFrameのスライスを取得して修正しようとすると、この警告が表示される可能性があります。

big_dfの影響を気にしない場合は、警告を無視する可能性があります。もう1つの解決策は、dfを作成するときに.copy()を使用して、元の大きなデータフレームにリンクされていない「妨げられない」DataFrameを確実に取得することです。

関連する問題