assign()到dask DataFrames中的变量列名

时间:2015-10-20 18:19:12

标签: python pandas dataframe dask

我的代码适用于pandas,但我无法将其转换为使用dask。有一个部分解决方案here,但它不允许我使用变量作为我分配的列的名称。

以下是工作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的先前值。

如何使用变量作为列的名称? for循环迭代的次数远远超过我愿意复制/粘贴的次数。

0 个答案:

没有答案