質問: pd.read_csv('sample.csv',encoding='shift_jis',usecols=[0,51,52,105,106,109,127]) df[df["109"].str.contains("文字列")] df.to_csv('aaaa.csv',encoding="shift_jis") ``` カラムを指定して読み込んでそのカラムの番号内で文字列を検索し、 それ以外の行を削除しようとこころみたのですがうまくいきません。 key errorがでるのですが、どうすればいいかわかりません。。 お手数をおかけしますが宜しくお願い致します。
回答: 単に`usecols`にて選択された列のなかに "109"という **『column name』** の列が存在しないだけかと思いますが・・。 > > 質問のコードでは `usecols` に **column index**のリストにて **109** を与えておりますが、その列の **column name** が **"109"** であるとは限りません(通常はHeader行に記載されている名前になるかと思います)。 > > > とりあえずですが、CSVデータのHeaderがどのように記述されているのかわからないので、**column name** ではなく **column index** を使って選択する方法で良いかと思います。 今回の場合、元のcsvデータの 110列目(column_index=109) のデータを使いたいのであれば、読み込み後のデータとしては 6列目(column_index=5) になるので ``` df[df.iloc[:,5].str.contains("文字列")].to_csv('aaaa.csv', ...) ``` で良いのではないでしょうか