私はpandas
を新しくしました。データフレームがあれば、特定の要件を満たさない列をいくつか削除しようとしていました。それを行う方法を研究し、私はこのような構造になった:フレームを処理するときにDataFrameからスライスのコピーに値を設定しようとしています。 - pandas
df = df.loc[df['DS_FAMILIA_PROD'].isin(['CARTOES', 'CARTÕES'])]
はしかし、私はこのエラーを取得する:
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
self[name] = value
私は「ので、私は何をすべきかについてはよく分かりません既に.loc
機能を使用しています。 私は何が欠けていますか?
f = ['ID_manifest', 'issue_date', 'channel', 'product', 'ID_client', 'desc_manifest']
df = pd.DataFrame(columns=f)
for chunk in df2017_chunks:
aux = preProcess(chunk, f)
df = pd.concat([df, aux])
def preProcess(df, f):
stops = list(stopwords.words("portuguese"))
stops.extend(['reclama', 'cliente', 'santander', 'cartao', 'cartão'])
df = df.loc[df['DS_FAMILIA_PROD'].isin(['CARTOES', 'CARTÕES'])]
df.columns = f
df.desc_manifest = df.desc_manifest.str.lower() # All lower case
df.desc_manifest = df.desc_manifest.apply(lambda x: re.sub('[^A-zÀ-ÿ]', ' ', str(x))) # Just letters
df.replace(['NaN', 'nan'], np.nan, inplace = True) # Remone nan
df.dropna(subset=['desc_manifest'], inplace=True)
df.desc_manifest = df.desc_manifest.apply(lambda x: [word for word in str(x).split() if word not in stops]) # Remove stop words
return df
あなたのコードはOKと思われるが、私は問題は前だと思う - [-ビュー対コピーを返す]チェック(http://pandas.pydata.org/pandas-docs/stable/ – jezrael
は、 'df = df.loc [df ['DS_FAMILIA_PROD']。isin(['CARTOES'、 'CARTÕES'])]'行を削除することはありません''DS_FAMILIA_PROD''列の値に基づいて、列を削除しないでください。 –