2016-12-28 13 views
-2

私は、フォーラムに周りのチェックしましたが、これに答えを見つけるように見えることはできません。パンダデータフレームの挙動

私は「スコア」である場合に基づいてデータフレームに列を追加するために、いくつかのテストコードを作成しました偉大または9に等しい:

import pandas as pd 
import numpy as np 
df1 = pd.DataFrame.from_items([('Score', [1,9,10]),\ 
('Response',['this is text', 'have some more text',\ 
          'how about one more?'])]) 

df1['1 or 2'] = np.where(df1['Score'] >= 9, '1', '0') 
print(df1) 

出力:

Score    Response 1 or 2 
0  1   this is text  0 
1  9 have some more text  1 
2  10 how about one more?  1 

これは完璧に動作します。

しかし、私はcsvから来る私の実際のデータセットのための同じタイプのコードを実行すると、それは動作しません。私は、別の "行"とエラーメッセージのインデックスまたは追加された列で奇妙な出力を取得します。しかし、私はテストコードでエラーメッセージを受け取っていないのですか?

コード:

df1 = pd.DataFrame.from_csv('C:PATH_HERE\\SOME_FILE.csv', encoding = 'ISO-8859-1') # opens the file 

df2 = df1.reset_index() # Resets the columns to correct position 

df3 = df2.dropna() # dropping the nulls 
df3['1 or 2'] = np.where(df3['LIKELY_TO_RECOMMEND'] >= 9, '1', '0') 

print(df3.head(n=5)) #displaying top 5 so fits on screen for Stack 

出力とエラー:

LIKELY_TO_RECOMMEND        VERB_REASON_FOR_SCORE \ 
0     0.0 Atendimento robotizado, nenhuma flexibilidade ... 
1     0.0 The migration specialist, Lynette Throckmorton... 
2     0.0   Lousy lying and no recommendable service 
3     0.0 The new software is - not only, apparently, fu... 
4     0.0 I feel that the portal for the garnishments is... 

    1 or 2 
0  0 
1  0 
2  0 
3  0 
4  0 

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 
    df3['1 or 2'] = np.where(df3['LIKELY_TO_RECOMMEND'] >= 9, '1', '0') 

なぜ一つのコードでこの 'エラー' や他のではありませんか?

+0

別々の行ではありません。つまり、それだけで、ディスプレイに包みました1行SettingWithCopyWarningは、このサイトを検索したり、グーグルグーグルで検索したりすることで、何か不安な質問を見つけることができます。 – BrenBarn

+0

@BrenBarnは別の行に関して、それは私が信じたものです。エラーに関して。私はなぜこのデータフレームで起こっているのか分からないのですが、他の「テスト」のものではありません。私はこの問題を調査したが、なぜエラーが両方のコードセットにまたがっているのか理解できない。 – MattR

+0

SettingWithCopyWarningを再現できません。どのパンダバージョンを使用していますか? – BrenBarn

答えて

0

だから、いくつかのコードで再生した後、私はSettingWithCopyWarning「エラー」は出現した理由は、コードから、それがうまく働いたことを取り外すときdropna()

を使用してによるものであることがわかりました。 this post をオフに続いて、私はまだ私のデータフレームにヌルを落としながら、「エラー」を削除するためにコードの下に使用:データはに収まるように広すぎるので

df3 = df2.dropna().copy()