2

で動作するコードがありますが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

列の名前に変数を使用するにはどうすればよいですか? for ループは、コピー/貼り付けするよりもはるかに多く繰り返されます。

4

0 に答える 0