Python:使用assign()的函数中的新列名

T_T*_*T_T 2 python function dataframe pandas

在下面的代码中,我创建了一个函数来返回一个DataFrame,其中一个新的列new_col具有一个周期移位值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
Run Code Online (Sandbox Code Playgroud)

这给了

     A  new_col
0   10  NaN
1   11  10.0
2   12  11.0
Run Code Online (Sandbox Code Playgroud)

bus*_*ear 5

您需要将参数解压缩为assign使用字典.只需拥有assign(new_col=shift_l)列名称即可new_col.尝试:

dframe.assign(**{new_col: shift_1})
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用:

dframe[new_col] = shift_1
Run Code Online (Sandbox Code Playgroud)