>>> df = pd.DataFrame({'a': ['a','b','c','d'], 'b': [1, 'b', 'c', 2], 'c': [np.nan, 2, 3, 4]})
>>> df
a b c
0 a 1 NaN
1 b b 2.0
2 c c 3.0
3 d 2 4.0
>>> dict(filter(lambda x: x[1] != np.number, list(zip(df.columns, df.dtypes))))
{'a': dtype('O'), 'b': dtype('O')}
注意,上面的答案将包括DateTime、TimeStamp、Category和其他数据类型。
使用
object
更具限制性(尽管我不确定其他dtypes
是否也属于object
类型):创建数据帧:
会是这样的:
您可以检查调用
dtypes
的类型:可以使用
items()
方法列出字符串列,并通过object
进行筛选:或者,您可以使用“选择数据类型”来显示仅包含以下字符串的数据帧:
是的,有可能。你用^{}
也可以使用^{} 按数据类型选择列
扩展到Scratch'N'Purr的答案:
所以我添加了一些混合类型的列。您可以看到,
filter
+dict
方法生成key:value映射,其中列的数据类型超出了np.number
的界限。这在规模上应该很管用。您还可以尝试将每个列强制为特定类型(例如int
),然后在无法将字符串列转换为int
时捕获ValueError
异常。有很多方法可以做到这一点。相关问题 更多 >
编程相关推荐