前提・実現したいこと
python pandas データフレームの要素のうち、大文字で書かれた部分のみ取り出したいです。以下のデータフレームdf1において、Person1~Person4の情報Information1~4から、大文字で示されている名前のみを取り出して新たなデータフレームを作りたいです。
該当のソースコード
import pandas as pd import numpy as np df1 = pd.DataFrame({'Information1' : [19, 'game. tennis','Prof. HANA YAMADA', 'Canada.'], 'Information2' : ['books', 24, 'Shopping.','A. ELIZABETH JONES.'], 'Information3' : ['Mr. ADAMS', 'Italy', 'Japan', 23], 'Information4' : ['Australia', 'MARCO', 25, 'movies']}, index = {'Person1','Person2','Person3', 'Person4'} )
これを出力してみて、df1は
Information1 Information2 Information3 Information4 Person1 19 books Mr. ADAMS Australia Person2 game. tennis 24 Italy MARCO Person3 Prof. HANA YAMADA Shopping. Japan 25 Person4 Canada. A. ELIZABETH JONES. 23 movies
試したこと
以前の質問で回答いただいたものを参考に致しました。
Name = [] for row in df1.itertuples(): for item in row: if hasattr(item, "isupper") and item.isupper(): Name.append(item) break else: Name.append(None) df1["Name"] = Name df1 =df1.drop(['Information1','Information2','Information3','Information4'], axis=1)
この結果
Name Person1 None Person2 MARCO Person3 None Person4 A. ELIZABETH JONES.
となりますが、この場合Prof. HANA YAMADAやMr. ADAMSははじかれてNoneになってしまいます。理想は
Name Person1 ADAMS Person2 MARCO Person3 HANA YAMADA Person4 A. ELIZABETH JONES.
のように役職名や敬称を省いて大文字で示されている名前のみ取り出したいです。
何か有効な方法がございましたらよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/22 16:25