Python Pandas 插入 DF 不起作用

Lun*_*Box 1 python pandas

我有一个如下所示的数据框:

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方法。