[解決済み] Pythonです。Pandasは文字列の長さに基づいて文字列データをフィルタリングする
2023-01-26 17:26:55
質問
文字列の長さが10未満のデータをフィルタリングしたい。
A列、B列の文字列長が10でない行をフィルタリングしようとすると、このようになりました。
df=pd.read_csv('filex.csv')
df.A=df.A.apply(lambda x: x if len(x)== 10 else np.nan)
df.B=df.B.apply(lambda x: x if len(x)== 10 else np.nan)
df=df.dropna(subset=['A','B'], how='any')
これは動作が遅いですが、動作しています。
ただし、Aのデータが文字列ではなく数値の場合(read_csvが入力ファイルを読み込む際に数値として解釈される)、エラーが発生することがあります。
File "<stdin>", line 1, in <lambda>
TypeError: object of type 'float' has no len()
こんなことより、もっと効率的でエレガントなコードがあるはずだと思うのですが。
以下の回答やコメントに基づいて、私が見つけた最もシンプルな解決策は、次のとおりです。
df=df[df.A.apply(lambda x: len(str(x))==10]
df=df[df.B.apply(lambda x: len(str(x))==10]
または
df=df[(df.A.apply(lambda x: len(str(x))==10) & (df.B.apply(lambda x: len(str(x))==10)]
または
df=df[(df.A.astype(str).str.len()==10) & (df.B.astype(str).str.len()==10)]
どのように解決するのですか?
import pandas as pd
df = pd.read_csv('filex.csv')
df['A'] = df['A'].astype('str')
df['B'] = df['B'].astype('str')
mask = (df['A'].str.len() == 10) & (df['B'].str.len() == 10)
df = df.loc[mask]
print(df)
filex.csvに適用されました。
A,B
123,abc
1234,abcd
1234567890,abcdefghij
上記のコードでは
A B
2 1234567890 abcdefghij
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonで文字列を反転させる
-
[解決済み] Pythonで整数から文字列に変換する
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] Python Pandas データをトークン化するエラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] 新しいpip backtrackingの実行時問題の解決