私は、フォーラムに周りのチェックしましたが、これに答えを見つけるように見えることはできません。パンダデータフレームの挙動
私は「スコア」である場合に基づいてデータフレームに列を追加するために、いくつかのテストコードを作成しました偉大または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')
なぜ一つのコードでこの 'エラー' や他のではありませんか?
別々の行ではありません。つまり、それだけで、ディスプレイに包みました1行SettingWithCopyWarningは、このサイトを検索したり、グーグルグーグルで検索したりすることで、何か不安な質問を見つけることができます。 – BrenBarn
@BrenBarnは別の行に関して、それは私が信じたものです。エラーに関して。私はなぜこのデータフレームで起こっているのか分からないのですが、他の「テスト」のものではありません。私はこの問題を調査したが、なぜエラーが両方のコードセットにまたがっているのか理解できない。 – MattR
SettingWithCopyWarningを再現できません。どのパンダバージョンを使用していますか? – BrenBarn