在下面的代码中,我创建了一个函数,该函数返回带有新列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
答案 0 :(得分:5)
assign
会将关键字参数设置为列名。只需拥有assign(new_col=shift_l)
即可创建一个名为new_col
的列。 关键字参数不会被评估为变量。
如果要使用变量来定义列名,则可以从词典中解压缩。试试:
dframe.assign(**{new_col: shift_1})
一种替代方法是使用:
dframe[new_col] = shift_1