使用Pandas的Python -检索包含数字的所有列的名称



我在网站上搜索解决方案,但我找不到任何相关的,只有过时的代码。我是Pandas库的新手,我有以下dataframe作为示例:

<表类> B C D E tbody><<tr>1420.4红108前面1641.3绿色98后71-1.0蓝色234前面1090.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()

相关内容

  • 没有找到相关文章

最新更新