为什么在这段代码中Pandas把我的numpy float32强制转换成float64?
这种行为对我来说非常奇怪,我不确定它是否是一个 bug。我的 Pandas 版本是 0.17.1(已更新的 PyPI 版本),我注意到最近有一些强制转换的 bug 已经得到解决,请参见 https://github.com/pydata/pandas/issues/11847 。我还没有尝试过使用更新的 GitHub 主版本中的代码片段。
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame([[1, 2, 'a'], [3, 4, 'b']], dtype=np.float32)
>>> A = df.ix[:, 0:1].values
>>> df.ix[:, 0:1] = A
>>> df[0].dtype
dtype('float64')
这种行为对我来说非常奇怪,我不确定它是否是一个 bug。我的 Pandas 版本是 0.17.1(已更新的 PyPI 版本),我注意到最近有一些强制转换的 bug 已经得到解决,请参见 https://github.com/pydata/pandas/issues/11847 。我还没有尝试过使用更新的 GitHub 主版本中的代码片段。
这是一个 bug 还是我误解了 Pandas 的某个 "功能"?如果这是一个功能,那么我该如何避免它呢?
(强制转换问题涉及我最近提出的有关 Pandas 赋值性能的问题:Assignment of Pandas DataFrame with float32 and float64 slow)
numpy
。这使得它在处理混合类型时具有更大的灵活性-字符串可以是任意长度,列可以混合类型等。但是这种灵活性伴随着计算和内存成本。 - hpaulj