此问题在此处已有答案:
Assign to Pandas dataframe in place with method chaining(1个答案)
2天前关闭。
我尝试在Pandas 1.5.2中使用pandas.DataFrame.assign
。例如,让我们考虑以下代码:
df = pd.DataFrame({"col1":[1,2,3], "col2": [4,5,6]})
df.assign(
test1="hello",
test2=df.test1 + " world"
)
我面临着这样的错误:
属性错误:'DataFrame'对象没有属性'test1'
但是,in the documentation明确指出:
可以在同一个assign
中分配多个栏目,**kwargs
中后面的项目可以引用df
中新建或修改的栏目;按顺序计算项并将其分配到df
中。
所以我不明白:如何在调用assign
时引用df
中新创建或修改的列?
2条答案
按热度按时间vmjh9lq91#
您可以将可调用对象传递给
assign
。此处使用lambda来引用DataFrame。参数****{str:可赎回或系列}**
列名是关键字。**如果值是可调用的,它们将在DataFrame上计算并分配给新列。**可调用对象不能更改输入DataFrame(尽管Pandas不会检查它)。如果值是不可调用的(例如,一个Series、标量或数组),它们将被简单地分配。
输出量:
n3ipq98p2#
您可以创建新的列,例如:"'"'df ['new']= df.col1 + something