我需要获取每个列的类型以正确对其进行预处理.
目前,我通过以下方法执行此操作:
import pandas as pd
# input is of type List[List[any]]
# but has one type (int, float, str, bool) per column
df = pd.DataFrame(input, columns=key_labels)
column_types = dict(df.dtypes)
matrix = df.values
由于我只使用pandas获取dtypes(每列),而使用numpy进行其他所有操作,因此我想从项目中删除pandas.
总结:有没有一种方法可以从numpy获取每列的(特定)dtypes
或:是否有一种快速方法来重新计算ndarray的dtype(在拼接矩阵之后)
解决方法:
Is there a way to obtain (specific) dtypes per column from numpy
不,没有.由于您的数据框具有混合类型,因此NumPy dtype将成为对象.这样的数组不存储在连续的存储块中,每列具有固定的dtype.相反,2d数组中的每个值都包含一个指针.
您的问题与询问是否可以在此列表列表中获取每个“列”的类型没有什么不同:
L = [[0.5, True, 'hello'], [1.25, False, 'test']]
由于指针集合中的数据没有列结构,因此没有“ column dtype”的概念.您可以测试每个子列表中特定索引的每个值的类型.但这打败了Pandas / NumPy的观点.