我有一段在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不允许在等号左侧使用表达式,并忽略了先前
name
的值。我如何使用一个变量作为我分配的列名?循环迭代的次数比我愿意复制/粘贴的次数要多得多。
d =
这行代码在做什么吗? - kazassign
相同。 - MRocklin