pythonのdataframe中の文章から特定の文字位置から特定の文字位置までの抽出方法
解決したいこと
pytnonのpandasデータフレームにおいて文章から特定の位置の単語を抜き出したいです。
例)
例として以下のデータフレームを考えます。
ここで、新しい列を作成してそこに生き物の名前だけを入れることが目的です。
例えば1行目なら”あめんぼ”という文字を抽出したいのです。
例
df = pd.DataFrame(
data={'列1': [1, 2, 3],
'列2': ["生き物:あめんぼ、色:黒", "生き物:犬、色:茶色", "生き物:トンボ、色:赤"]}
)
以下のように一行だけならfind関数で抽出できるのでこれをfor文で各行に適用すれば一応できますが、デーフレームを一括で変換させた方が処理としては軽いような気がして、for文を使わずに
df["列3"]=df["列2"].〇〇
みたいな感じで処理したいと思っています。
#方法1
#一行ならfind関数で対応できるためこれをfor文で回す(処理時間かかりそう?)
s=df.iloc[0,1]
target = "生き物: "
target2="、色"
idx = s.find(target)
idx2=s.find(target2)
r = s[idx+5:idx2]
r
自分で試したこと
DataFrameに対して.str[int:int]で特定の位置は指定できると知りましたが、各行で文字数が違うと使えません
文字で指定できないかと思い
df["列2"].str["生き物:":"、色"]
とかにするとNaNが出力されてしまいました。
分かりにくくてすみませんがよろしくお願いいたします。
df["列2"].str[4:8]
0 likes