2017-01-17 3 views
0

私はExcelシートを入手してパンダのデータフレームに置くパンダスクリプトを持っています。次に、このデータフレームで特定の単語を探していますdfの1と0のマスクを作成します。ここで私はその単語を見つけます。Python Pandasエラー:pandasは文字列の値を持つ.strアクセサのみを使用できます

であるように私はすべての情報を取得するので、私は、Excelシートの特定の形式を持っていない、と私は言葉を探し、エラーを生成し、このラインでマスクを作成します。

mask = np.column_stack([df[col].str.find(word) for col in df.columns.tolist()]).astype(int) 

このラインは時々このエラーを生成します。

pandas can only use .str accessor with string values, which use np.object_ dtype in pandas

任意のアイデアなぜ、どのようにそれを動作させるには?

あなたは

+0

'df.select_dtypes([np.object])を試してみてください。columns.tolist()'の代わりに 'df.columns.tolist()'リストで理解。今、あなたは非常にうまく混ざり合うことができる全ての 'dtype '列を選択しています。 'str.find()'関数が正しく動作するためには、これを文字列に限定する必要があります。 –

答えて

1

あなたがマスクにデータフレームに変換するためにlambda機能をapplymapを使用することができ感謝しています。 dfが入力データフレームの場合は、文字列wordが含まれている場合は、すべてのフィールドを1に変換し、それ以外の場合は0に変換することができます。

mask = df.applymap(lambda x: 1 if word in str(x) else 0) 
関連する問題