前提・実現したいこと
indexはそのままで、文字列を含む行を削除したい。
文字列の形式は様々である。
発生している問題・エラーメッセージ
input.csv
|name|A|B|C|D
|:--|:--|:--|:--|
getsu| 1| 2| 9| 0
ka| 0| 3| 8| 9
sui| 0| 4|nothing| 3
moku| 2| nan| 1| 4
kin| 3| 9| 1| 5
do| 4| NG| 1| 4
nichi| 5| 5| 1| 2
上記のような表に対して、文字列を含む行を削除したいと思っています。
結果として、suiとmokuとdoが抜けて下記のように出力したいです
output.csv
|name|A|B|C|D
|:--|:--|:--|:--|
getsu| 1| 2| 9| 0
ka| 0| 3| 8| 9
kin| 3| 9| 1| 5
nichi| 5| 5| 1| 2
結果として、name, A, B, C, Dの行しか抽出されないので、indexも入ってしまって、すべての行が落とされているのだろうと感じています。
ご教示いただければ幸いです。
よろしくお願いいたします。
該当のソースコード
Python3
1import pandas as pd 2datapd = pd.read_csv("input.csv", encoding='SHIFT-JIS', index_col=0) 3datapd2 = datapd.drop(index=datapd.select_dtypes(include='object').index) 4datapd2.to_csv("output.csv")
試したこと
index_col = 0 にしたりしましたが、違うようです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
"1"という文字列の可能性もありますが、どう区別しましょうか
"1"は文字列に含まれてしまうのですか?実際には8000x1000行列くらいで、1はたくさん含まれています。この回答でよろしいでしょうか。文字列のパターンも多くて、どれか1個に特定するのが難しい状況です。ですので、がさっと「文字を含むセルを含む行を丸ごと削除」という形にしたいと考えています。
たぶんですが、恐らく全列が型としては文字列で、"1"などは「数字の文字列」として入っていると思われます。整数型や浮動小数点型に変換できるものだけ、あるいは半角数字のみ(or 半角数字+ドット)を含むものだけ、といった条件で取り出し、必要なら数値型に変換して使うことになります。確認ですが、数字はすべて整数と想定して良いですか?
ありがとうございます。だいぶわかってきました。数字は整数と少数を含むもの、様々です。
回答1件
あなたの回答
tips
プレビュー