我有一个看起来像这样的数据框:
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)
不返回任何内容,特别是单词'None'
。你知道我在做什么错吗?我没有收到错误消息。
答案 0 :(得分:3)
代替:
df2 = df2.insert(1, 'file_id_value', range(0, len(df2)))
要做:
df2.insert(1, 'file_id_value', range(0, len(df2)))
说明:在Python中,一切都是对象。对象被创建并保存到内存中。与按值进行变量分配的其他编程语言相比,Python允许您从外部修改对象,而无需将更改保存到新变量中(只要对象是可变类型)。因此,您可以在df2
中操作而无需使insert
函数返回df2
的新实例。这并不总是适用;例如,字符串是不可更改的,因此需要重新分配。
要了解更多信息,您可能需要查看以下SO问题:How are Python in-place operator functions different than the standard operator functions?
引用与加法运算符相关的可变对象:
对象的 iadd 方法也带有两个参数,但是就地进行更改,修改了第一个参数的内容。因为这需要对象突变,所以不可变类型(如标准数字类型)不应具有 iadd 方法。