我有一个如下所示的数据框:
df1
A Q
0 Apple chair
1 orange desk
2 pear monitor
3 salad room
df2 = df1[['Q']]
print(df2)
Q
0 chair
1 desk
2 monitor
3 room
df2 = df2.insert(1, 'file_id_value', range(0, len(df2)))
print(df2)
Run Code Online (Sandbox Code Playgroud)
不返回任何内容,特别是单词'None'。你知道我做错了什么吗?我没有收到错误消息。
小智 5
代替:
df2 = df2.insert(1, 'file_id_value', range(0, len(df2)))
Run Code Online (Sandbox Code Playgroud)
做:
df2.insert(1, 'file_id_value', range(0, len(df2)))
Run Code Online (Sandbox Code Playgroud)
解释:在 Python 中,一切都是对象。对象被创建并保存到内存中。与通过值调用进行变量赋值的其他编程语言相比,Python 允许您从外部修改对象,而无需将更改保存到新变量中(只要对象是可变类型)。出于这个原因,您可以在df2不需要使insert函数返回df2. 这并不总是适用;例如,字符串是不可变的,因此它们需要重新分配。
要了解更多信息,您可能想查看这个 SO 问题:Python 就地运算符函数与标准运算符函数有何不同?
引用与加法运算符相关的可变对象:
一个对象的iadd方法也接受两个参数,但会就地进行更改,即修改第一个参数的内容。因为这需要对象突变,所以不可变类型(如标准数字类型)不应该有iadd方法。