Tại sao Pandas ép buộc float32 NumPy tôi để float64 trong đoạn mã này:Tại sao Pandas ép buộc float32 numpy của tôi để 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')
Các hành vi có vẻ rất lạ với tôi ngạc nhiên rằng nếu nó là một lỗi. Tôi đang sử dụng phiên bản Pandas 0.17.1 (cập nhật phiên bản PyPI) và tôi lưu ý rằng có nhiều lỗi đã được khắc phục gần đây, xem https://github.com/pydata/pandas/issues/11847. Tôi đã không thử các đoạn mã với một bậc thầy GitHub cập nhật.
Có phải là lỗi hoặc tôi hiểu nhầm một số "tính năng" trong Pandas? Nếu nó là một tính năng, thì làm thế nào để tôi có được nó?
(Vấn đề ép buộc liên quan đến một câu hỏi gần đây tôi hỏi về việc thực hiện nhiệm vụ Pandas: Assignment of Pandas DataFrame with float32 and float64 slow)
Nó có thể kỳ quặc nhưng nó phù hợp với vón cục. Numpy tự động chuyển ngay cả số nguyên thành các loại numpy.float64. Kể từ khi Pandas đã gumpy ở lõi, chức năng này được mong đợi IMO (mặc dù chắc chắn không phải lý tưởng trong trường hợp của bạn). – Benji
Nhưng 'gấu trúc' có xu hướng sử dụng 'dtype = object' lớn hơn đồng bằng 'numpy'. Nó cho phép nó linh hoạt hơn khi xử lý các kiểu hỗn hợp - các chuỗi có thể có chiều dài bất kỳ, các cột có thể kết hợp các loại, vv Nhưng tính linh hoạt đi kèm với chi phí tính toán và bộ nhớ. – hpaulj