Я хочу привести некоторые данные в pandas DataFrame, и я хочу назначить dtypes для каждого столбца при импорте. Я хочу быть в состоянии сделать это для больших наборов данных с большим количеством различных колонн, но, как пример:Как установить dtypes по столбцу в pandas DataFrame
myarray = np.random.randint(0,5,size=(2,2))
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype=[float,int])
mydf.dtypes
результатов:
TypeError: data type not understood
Я попробовал несколько других методов, такие как:
mydf = pd.DataFrame(myarray,columns=['a','b'], dtype={'a': int})
TypeError: object of type 'type' has no len()
Если я положил dtype=(float,int)
, он применяет формат поплавка к обоим столбцам.
В конце концов, я хотел бы просто передать ему список типов данных так же, как передать список имен столбцов.
аргументом для 'dtype' должен быть действительным NumPy DTYPE (и структурированный dtypes не поддерживается), поэтому список или dict не будут работать. Возможный способ - сделать астип для каждого столбца отдельно. Или сначала создайте структурированный массив numpy и предоставите это DataFrame. – joris
Я знал, что могу назначить каждый отдельно в цикле, но я удивлен, что dtype = недостаточно гибко, чтобы разместить список. Спасибо за ответ, хотя, хорошо, чтобы получить подтверждение :) – Chris
https://github.com/pydata/pandas/issues/4464 в настоящее время является открытой проблемой для этого (если вы хотите сделать запрос на тягу, было бы замечательно) – Jeff