質問: ['シェア','バルコニー'] for name in var_name: df["name"]=0 # dfにvar_nameの要素の変数名を作成する for tango in var_tango: if "tango" in str(df['x'].iat[i]): # x内にtangoの要素が入っていた場合に下記を実行 df["name"].iat[i]= 1 ```
回答: リストをまとめてループ処理できる`zip`と文字列を含むかどうかを判定する`str.contains`を使って次のようにかけます。 ``` import pandas as pd df = pd.DataFrame( {'x': ['バルコニーのあるシェアハウス', '南にバルコニーあり', 'シェアハウス', '角部屋、シェアハウス']}) var_name = ['share','balcony'] var_tango = ['シェア','バルコニー'] for (name, tango) in zip(var_name, var_tango): df[name] = df['x'].str.contains(tango).astype(int) ``` `zip`を使わずに書けば以下のようになります。この問題では、`for`の二重ループにするのはよくないです。 ``` for i in range(len(var_name)): df[var_name[i]] = df['x'].str.contains(var_tango[i]).astype(int) ```