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

标签 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

最佳答案

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/

相关文章:

python - tensorflow 中的张量形状

python - 如何获得 DataFrame 中列值的组合结果?

python - 如何将 Python 对象转换为 Cython 扩展类型的 std::vector 并返回?

Python Pandas 错误 : AttributeError: 'module' object has no attribute 'formats'

python 和 Pandas : Unable to drop columns

R 为什么在 period.apply 使用函数 "mean with condition"时出现错误结果

python - 如何执行 zip 格式的 python 包

python - Tkinter 'module' 对象不可调用

java - 是否可以优化此功能?

结构数组上的 C++ qsort 内部函数