我在Python(3.6)中有一个带有数字和分类属性的Pandas数据帧。我想拉出一个数字列列表,以便在我的代码的其他部分使用。我的问题是这样做最有效的方法是什么?
This seems to be the standard answer:
num_cols = df.select_dtypes([np.number]).columns.tolist()
但是我担心select_dtypes()
can be slow这似乎增加了一个我希望不需要的中间步骤(在拉回数字的列名之前对数据进行子集化属性)。
有关更有效的方法的任何想法吗? (我知道有一种私有方法_get_numeric_data()
也可以使用,但无法找到它是如何工作的,我不喜欢使用私有方法作为长期解决方案。)
答案 0 :(得分:2)
df.select_dtypes
用于选择数据,制作数据的副本,您实际上放弃了这些数据,然后只选择列。这个 是一种无效的方式。只需使用:
df.columns[[np.issubdtype(dt, np.number) for dt in df.dtypes]]