機械学習用の pandas df に機能を追加できるようにする Python 関数を作成しようとしています。Python 関数で文字列を使用する方法を誤解していると思います。
この関数は df の行を調べ、何ヶ月先の行識別子 (下の行数) が同じ識別子を持つかどうかを確認します。そうであれば、将来の行の「開始」機能の値を新しい機能列に追加し、それ以外の場合は最初の行の「終了」を追加します。カスタマイズされたシフト機能です。
この機能を追加したら、適切な列ラベルを使用して df に新しい機能として 1 または 0 の列をさらに追加したいと思います。これは、「feat_so_many_months_in_future_is_higher_or_lower」のようなラベルが付けられます。
問題は、しきい値部分の周りで 2 番目のバイナリにさえ到達できないことです。最初の新機能を適切な名前で追加する際に問題が発生しています。
def binary_up_down(name_of_new_feature, months_in_future, percent_threshold):
name_of_new_feature = []
for i in range(0, df.shape[0], 1):
try:
if df['identifier'][i]==df['identifier'][i + months_in_future]:
name_of_new_feature.append(df['start'][i + months_in_future])
else:
name_of_new_feature.append(df['end'][i])
except KeyError:
name_of_new_feature.append(df['end'][i])
df[str(name_of_new_feature)]=name_of_new_feature
### Add test to check if shifted value is above or below threshold and name new feature
appropriately ###
return df
私の考えは、次のように関数を呼び出すことです:
binary_up_down('feat_value_in_1m', 1, 5)
#Then
binary_up_down('feat_value_in_3m', 3, 5) # and on an on...
コードを実行すると、この行が問題のようです:
df[str(name_of_new_feature)] = name_of_new_feature
...すべての新しい機能列の値を列名として追加するためです!
どんなポインタでも大歓迎です!