【发布时间】:2015-10-24 14:38:38
【问题描述】:
如您所见,数组已被复制。
import pandas as pd
import numpy as np
foo = np.array([['a', 'b'],['c', 'd']],dtype='U32')
df_foo = pd.DataFrame(data=foo, copy=False)
foo[0,0]='different'
print(df_foo.values)
返回
[['a' 'b']
['c' 'd']]
此外,foo 具有 dtype='<U32',而 df_foo.values 具有 dtype=object。我不需要解决问题的方法,我更好奇是否有可能,如果没有,为什么不呢?
【问题讨论】:
-
我不认为这是可能的,尽管 Jeff 已经讨论了 0.17.0 中即将推出的功能,我认为这与stackoverflow.com/questions/31132784/… 非常相似
-
即使没有副本,这也是不可能的 - 字符串表示为对象 dtype,因此它们在转换时被复制。如果你从 object dtype 开始,它将是 view (iow 你正在尝试的东西会起作用)。但是它们在对象类型方面存在许多奇怪的问题,因此在您进行操作时无法保证,并且在很多情况下您可能会失去视图。
-
有道理。非常感谢:)