python: pandas.dataframe.values 没有改变

标签 python pandas

我在 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 中的列。在您的情况下,oneint64 dtypetwofloat64。当你调用 values 时,最终会发生一个 concatenate 风格的操作,那些总是返回一个副本,这就是为什么你不能分配给它并在数据。

关于python: pandas.dataframe.values 没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555338/

相关文章:

python - SWIG 类型映射返回输出参数 char*/size_t

python - 在 Pandas 中,根据不同模式选择多列的惯用方式是什么?

python - 使用 Pandas Groupby 和 Apply 函数时处理 None 值

python - 按键用先前或后续值填充缺失值

pandas - 如何将非零填充的日期字符串转换为 pandas 中的有用日期

另一种 Python 进程技术的 Python 看门狗?

python - 如何使用 django 删除图像?

python - 如何在 QTabWidget 中设置背景颜色/图像特定选项卡?

python - 将 3D 椭球拟合到 3D 空间中的点 - 不同的方法,不同的答案

python - 如何使用 for 循环动态创建数据帧