在下面的代码中,我创建了一个函数来返回一个带有新列 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
最佳答案
assign
将把关键字参数设置为列名。只需使用 assign(new_col=shift_l)
即可创建一个名为 new_col
的列。 关键字参数不会被计算为变量。
如果您想使用变量来定义列名称,您可以从字典中解压。尝试:
dframe.assign(**{new_col: shift_1})
另一种方法是使用:
dframe[new_col] = shift_1
关于Python:使用 allocate() 函数中的新列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965901/