Python:具有assign()的函数中的新列名

时间:2018-12-29 01:11:01

标签: python pandas function dataframe

在下面的代码中,我创建了一个函数,该函数返回带有新列new_col的DataFrame,该列具有ori_col的一周期移位值。但是,输出的新列的名称为new_col,而不是B。我在这里想念什么?

import pandas as pd

def add_col_diff(dframe, ori_col, new_col):
    shift_1 = dframe[ori_col].shift(1)
    return dframe.assign(new_col=shift_1)

data = {'A': [10, 11, 12]}
df = pd.DataFrame.from_dict(data)
df = add_col_diff(df, 'A', 'B')
df

这给

     A  new_col
0   10  NaN
1   11  10.0
2   12  11.0

1 个答案:

答案 0 :(得分:5)

assign会将关键字参数设置为列名。只需拥有assign(new_col=shift_l)即可创建一个名为new_col的列。 关键字参数不会被评估为变量。

如果要使用变量来定义列名,则可以从词典中解压缩。试试:

dframe.assign(**{new_col: shift_1})

一种替代方法是使用:

dframe[new_col] = shift_1