2017-07-11 8 views
1

この単純なコード行を使用して、私はコード全体を運ぶよりもSettingWithCopyWarningエラーを受け取ります。python astype(str)がSettingWithCopyWarningを返し、私がlocを使用するように要求します。

#make email a string 
df['Email Address'] = df['Email Address'].astype(str) 

C:\Users\xxx\AppData\Local\Continuum\Anaconda2\lib\site-packages\ipykernel\__main__.py:2: 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 

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 
    from ipykernel import kernelapp as app 

私はドキュメントを読みましたが、locで動作させることはできません。以下のコードは間違っています。

df.loc['Email Address'] = df.loc['Email Address'].astype(str) 

これが重複質問であれば言い訳してください - 私はStackOverflowの上でそれを検索するが、LOCとastypeに取り組むものを見つけることができませんでした。

+0

の髪型、 '' df.ix [:, 'メールアドレス'] =のDF [ 'メールアドレス'] astype(文字列) '' – Meitham

答えて

1

あなたの課題は、どのように割り当てを行っているのかではありません。これは、割り当ての前にデータフレームを使用しています。割り当て前のある時点で、dfを作成して別のデータフレームへのビューになりました。あなたはdfは、他のデータフレーム内のデータへの無結合を持つ独立したものであることと、OKであれば、あなたは

df = df.copy() 

は、あなたの割り当てを行うに進みその後

... bool(df.is_copy)

でこれを確認することができます。

+0

うわー - 。それは正しいですが、私はのフィルターから新しいデータフレームを作成しました以前のデータフレームdf = raw [raw ['COUNTRY']。isin(['United States'、 'C​​anada']) - これをどのように行ったのか、df = df.copy()どのような?ありがとうございました – jeangelj

関連する問題