質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1450閲覧

pandas str.contains で、カタカナの全角、半角の区別をしないで抽出する方法

matsutai

総合スコア53

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2023/03/08 14:27

編集2023/03/09 09:19

実現したいこと

pandas str.contains で、カタカナの全角、半角の区別をしないせず、抽出したいです。
アルファベットの大文字、小文字は、引数で、case=False で区別せず抽出できるのですが、
カタカナの全角、半角が入った文字を区別せずに抽出することができません。

該当のソースコード

python

1import pandas as pd 2list = ['A','B'] 3df1 = pd.DataFrame([['イチロー'], ['ICHIRO'], ['ichiro'],['イチロー']], columns=['名前']) 4df1 5 名前 60 イチロー 71 ICHIRO 82 ichiro 93 イチロー 10 11df1[df1['名前'].str.contains('ichiro',case=False)] #I全て子大文字 12 名前 131 ICHIRO 142 ichiro 15 16df1[df1['名前'].str.contains('IChiro',case=False)] #ICが大文字 17 名前 181 ICHIRO 192 ichiro 20 21df1[df1['名前'].str.contains('イチロー',case=False)] #全て子文字 22 名前 233 イチロー 24 25df1[df1['名前'].str.contains('イチロー',case=False)] #イが大文字 26 名前 27

カタカナの文字列の、全角、半角の混ざった検索語での抽出方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/03/08 14:40

> カタカナの大文字、小文字の区別をしないせず カタカナの大文字、小文字とは何ですか?全角/半角のことを言いたいのでしょうか?
matsutai

2023/03/08 23:30

すいません。まちがえました. カタカナは、全角、半角です。
meg_

2023/03/09 02:27

質問は編集できますので修正しましょう。
guest

回答1

0

ベストアンサー

unicodedata.normalize() を使う場合。

python

1import pandas as pd 2import unicodedata 3 4df1 = pd.DataFrame([['イチロー'], ['ICHIRO'], ['ichiro'], ['イチロー']], columns=['名前']) 5 6print(df1) 7 8# 「半角カタカナ」を「全角カタカナ」に変換 9print(df1[df1['名前'].apply(lambda x: unicodedata.normalize('NFKC', x)).str.contains('イチロー')]) 10 11# 名前 12# 0 イチロー 13# 1 ICHIRO 14# 2 ichiro 15# 3 イチロー 16# 17# 名前 18# 0 イチロー 19# 3 イチロー

投稿2023/03/08 14:57

編集2023/03/08 14:57
melian

総合スコア19798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsutai

2023/03/09 12:20

ありがとうございます。 使わせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問