猿问

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

在下面的代码中,我创建了一个函数来返回一个带有一个新列的数据帧,该列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

这给


     A  new_col

0   10  NaN

1   11  10.0

2   12  11.0


斯蒂芬大帝
浏览 251回答 1
1回答

胡子哥哥

assign将关键字参数设置为列名。简单地assign(new_col=shift_l)将创建一个名称为 的列new_col。关键字参数不会被评估为变量。如果要使用变量来定义列名,可以从字典中解压缩。尝试:dframe.assign(**{new_col: shift_1})另一种方法是使用:dframe[new_col] = shift_1
随时随地看视频慕课网APP

相关分类

Python
我要回答