如何在pandas中find数字列?
假设df
是一个pandasDataFrame。 我想查找数字types的所有列。 就像是:
isNumeric = is_numeric(df)
你可以使用DataFrame的select_dtypes
方法。 它包括两个参数包括和排除。 所以数字看起来像:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'] newdf = df.select_dtypes(include=numerics)
您可以使用以下命令仅筛选数字列
df._get_numeric_data()
例
In [32]: data Out[32]: AB 0 1 s 1 2 s 2 3 s 3 4 s In [33]: data._get_numeric_data() Out[33]: A 0 1 1 2 2 3 3 4
df.select_dtypes(exclude=['object'])
def is_type(df, baseType): import numpy as np import pandas as pd test = [issubclass(np.dtype(d).type, baseType) for d in df.dtypes] return pd.DataFrame(data = test, index = df.columns, columns = ["test"]) def is_float(df): import numpy as np return is_type(df, np.float) def is_number(df): import numpy as np return is_type(df, np.number) def is_integer(df): import numpy as np return is_type(df, np.integer)
调整这个答案 ,你可以做到
df.ix[:,df.applymap(np.isreal).all(axis=0)]
在这里, np.applymap(np.isreal)
显示数据框中的每个单元格是否为数字, .axis(all=0)
检查列中的所有值是否为True,并返回一系列可用于索引的布尔值所需的列。
这是在pandas数据框中查找数字列的另一个简单代码,
numeric_clmns = df.dtypes[df.dtypes != "object"].index
简单的单行答案,只用数字列创build一个新的数据框:
df.select_dtypes(include=[np.number])
如果你想要数字列的名字:
df.select_dtypes(include=[np.number]).columns.tolist()
完整的代码:
import pandas as pd import numpy as np df = pd.DataFrame({'A': range(7, 10), 'B': np.random.rand(3), 'C': ['foo','bar','baz'], 'D': ['who','what','when']}) df # ABCD # 0 7 0.704021 foo who # 1 8 0.264025 bar what # 2 9 0.230671 baz when df_numerics_only = df.select_dtypes(include=[np.number]) df_numerics_only # AB # 0 7 0.704021 # 1 8 0.264025 # 2 9 0.230671 colnames_numerics_only = df.select_dtypes(include=[np.number]).columns.tolist() colnames_numerics_only # ['A', 'B']