我在 pandas 数据框中发现奇怪的值分配限制。这是一个简单的例子
from __future__ import print_function
from pandas import DataFrame
import numpy as np
data=DataFrame({'one':[1,2],'two':[3.0,4]})
data.values[1,1]=data.values[1,1]*6 # these are type<numpyfloat64>
print(data.values[1,1])
#still returns 4.0 instead of expected 24.0
如果能解释为什么会这样,我将不胜感激。
最佳答案
当您访问 NDFrame
对象的 values
属性时,您会收到一个类型同类的数组。也就是说,values
返回 单个 dtype
的数组,它是 dtype
中精度最高的DataFrame
中的列。在您的情况下,one
是 int64
dtype
而 two
是 float64
。当你调用 values
时,最终会发生一个 concatenate
风格的操作,那些总是返回一个副本,这就是为什么你不能分配给它并在数据。
关于python: pandas.dataframe.values 没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555338/