我在网站上搜索解决方案,但我找不到任何相关的,只有过时的代码。我是Pandas库的新手,我有以下dataframe
作为示例:
<表类>
B
C
D
E
tbody><<tr>142 0.4 红 108 前面 164 1.3 绿色 98 后 71 -1.0 蓝色 234 前面 109 0.2 黑色 120 前面 表类>
使用select_dtypes
:
dataframe.select_dtypes('number').columns.tolist()
输出:
['A', 'B', 'D']
您可以先使用.dtype
,然后使用.kind
,同时使用列表推导过滤列名
# import pandas as pd
# df = pd.read_html('https://stackoverflow.com/questions/75909965')[0] # scraped your q
[c for c in df.columns if df[c].dtype.kind in 'iufc']
应该返回['A', 'B', 'D']
。[注意,'iufc'
涵盖有符号整数和无符号整数,以及实数和复数浮点数。]如果你想覆盖布尔值,也可以添加b
,因为它们是python中int
的子类....]
根据Marcelo的注释,您可以使用:
from pandas.api.types import is_numeric_dtype
numeric_columns = []
for column in df.columns:
if is_numeric_dtype(df[column]):
numeric_columns.append(column)
print(numeric_columns)
另一种可能的解决方案:
import re
df.columns[
[re.match(r'^(int|float)', x.name) != None for x in df.dtypes]].to_list()
输出:
['A', 'B', 'D']
使用以下函数:
首先选择所有的数字列,然后找到列,最后转换成列表。
df.select_dtypes(include="number").columns.to_list()