Tôi muốn đưa một số dữ liệu vào một DataFrame gấu trúc và tôi muốn gán dtypes cho mỗi cột khi nhập. Tôi muốn để có thể làm điều này cho các tập dữ liệu lớn hơn với nhiều cột khác nhau, nhưng, như một ví dụ:Làm thế nào để đặt dtypes theo cột trong gấu trúc DataFrame
myarray = np.random.randint(0,5,size=(2,2))
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype=[float,int])
mydf.dtypes
kết quả trong:
TypeError: data type not understood
Tôi đã thử một vài phương pháp khác như:
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': int})
TypeError: object of type 'type' has no len()
Nếu tôi đặt dtype=(float,int)
, nó áp dụng định dạng nổi cho cả hai cột.
Cuối cùng, tôi muốn chỉ có thể chuyển nó một danh sách các kiểu dữ liệu giống như cách tôi có thể chuyển nó một danh sách các tên cột.
Đối số cho 'dtype' phải là một dtype NumPy hợp lệ (và dtypes có cấu trúc không được hỗ trợ), do đó danh sách hoặc dict sẽ không hoạt động. Một cách có thể là làm astype cho mỗi cột một cách riêng biệt. Hoặc trước tiên hãy tạo một mảng có cấu trúc cứng nhắc và cung cấp mảng này cho DataFrame. – joris
Tôi biết tôi có thể chỉ định từng cá nhân trong một vòng lặp nhưng tôi ngạc nhiên dtype = không đủ linh hoạt để chứa một danh sách. Cảm ơn câu trả lời mặc dù, tốt để có được xác nhận :) – Chris
https://github.com/pydata/pandas/issues/4464 hiện đang là một vấn đề mở cho điều này (nếu bạn muốn làm một yêu cầu kéo sẽ là tuyệt vời) – Jeff