で動作するコードがありますがpandas
、使用するように変換するのに問題がありますdask
。ここに部分的な解決策がありますが、作成/割り当て先の列の名前として変数を使用することはできません。
作業pandas
コードは次のとおりです。
percent_cols = ['num_unique_words', 'num_words_over_6']
def find_fraction(row, col):
return row[col] / row['num_words']
for c in percent_cols:
df[c] = df.apply(find_fraction, col=c, axis=1)
dask
私が望むことをしないコードは次のとおりです。
data = dd.from_pandas(df, npartitions=8)
for c in percent_cols:
data = data.assign(c = data[c] / data.num_words)
c
これにより、(必要なもの)の値を変更するのではなく、呼び出された新しい列に結果が割り当てられますdata[c]
。列名を変数にすることができれば、新しい列を作成しても問題ありません。たとえば、これが機能した場合:
for c in percent_cols:
name = c + "new"
data = data.assign(name = data[c] / data.num_words)
明らかな理由から、python は式を an の左側に置くことを許可せず、=
の前の値を無視しますname
。
割り当て先の列の名前に変数を使用するにはどうすればよいですか? ループは、コピー/貼り付けするよりもはるかに多く繰り返されます。