为什么熊猫强迫我numpy的FLOAT32在这一段代码float64:为什么熊猫强迫我的numpy float32 float64?
>>> 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')
行为似乎很奇怪,我不知道这是一个错误。我在Pandas版本0.17.1(已更新的PyPI版本)上,并且我注意到最近解决了一些胁迫错误,请参阅https://github.com/pydata/pandas/issues/11847。我还没有用更新过的GitHub master尝试过这段代码。
这是一个错误还是我误解熊猫的一些“功能”?如果它是一个功能,那么我该如何解决它?
(胁迫问题涉及到一个问题,我最近谈到大熊猫分配的性能:Assignment of Pandas DataFrame with float32 and float64 slow)
它可能很奇怪,但它与numpy一致。 Numpy会自动将整数转换为numpy.float64类型。由于Pandas的核心内容是numpy,所以这个功能预计是IMO(尽管在你的情况下肯定不是很理想)。 – Benji
但'大熊猫'更倾向于使用'dtype = object'而不是普通的'numpy'。它在处理混合类型时给予它更大的灵活性 - 字符串可以是任意长度,列可以混合类型等。但灵活性伴随着计算和内存成本。 – hpaulj