質問: df['部署'].str.findall('(?<=課).*') print(df) ``` 出力結果 ``` 氏名 部署 0 ABC A部B課Cグループ 1 DEF D部E課Fグループ 氏名 部署 部 課 グループ 0 ABC A部B課Cグループ [A部] [B課] [Cグループ] 1 DEF D部E課Fグループ [D部] [E課] [Fグループ] ``` 期待している結果 ``` 氏名 部署 部 課 グループ 0 ABC A部B課Cグループ A部 B課 Cグループ 1 DEF D部E課Fグループ D部 E課 Fグループ ``` 環境 Python 3.5.2 :: Anaconda custom (64-bit) pandas 0.19.2 以上、よろしくお願いします。
回答: これでどうでしょう? ``` df['部'] = df['部署'].str.findall('.*部').str.get(0) df['課'] = df['部署'].str.findall('(?<=部).*課').str.get(0) df['グループ'] = df['部署'].str.findall('(?<=課).*').str.get(0) ``` 参考: > > そもそも、この現象はDataFrameの要素がリストになってしまっているのでしょうか? > > > findallした時点で、「パターンにマッチする要素全てをリストで返す」処理が行われています。 そのため、「マッチした要素1つのリスト」が代入されています。 そこで、 `.str.get(0)` で最初の要素をリストから取り出すように指定しました。