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

xbp102n0  于 2023-04-04  发布在  Python
关注(0)|答案(5)|浏览(168)

我在网站上搜索了一个解决方案,但是我找不到任何相关的东西,只有过时的代码。我是Pandas库的新手,我有下面的dataframe作为例子:
| A|B|C|D|E级|
| --------------|--------------|--------------|--------------|--------------|
| 一百四十二|0.4分|红色|一百零八|锋|
| 一百六十四|1.3岁|绿色|九十八|后方|
| 七十一|-1.0|蓝色|二百三十四|锋|
| 一百零九|0.2分|黑色|一百二十|锋|
我想提取包含数字(整数和浮点数)的列的名称。使用第一行来实现这一点是完全可以的。因此结果应该如下所示:['A', 'B', 'D']
我尝试了以下命令来获取一些包含数字的列:

dataframe.loc[0, dataframe.dtypes == 'int64']

Out:
A 142
D 108

这样做有两个问题。首先,我只需要列的名称,而不是值。其次,这只捕获整数列。我的下一次尝试只是给出了一个错误:

dataframe.loc[0, dataframe.dtypes == 'int64' or dataframe.dtypes == 'float64']
uqcuzwp8

uqcuzwp81#

使用select_dtypes

dataframe.select_dtypes('number').columns.tolist()

输出:

['A', 'B', 'D']
gpfsuwkq

gpfsuwkq2#

您可以使用.dtype然后使用.kind,同时使用list comprehension过滤column names

# 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的子类...]

h5qlskok

h5qlskok3#

根据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)
hgb9j2n6

hgb9j2n64#

另一个可能的解决方案:

import re

df.columns[
    [re.match(r'^(int|float)', x.name) != None for x in df.dtypes]].to_list()

输出:

['A', 'B', 'D']
rjzwgtxy

rjzwgtxy5#

使用以下函数:
首先选择所有数值列,然后查找列,最后转换为列表。
df.select _dtypes(include=“number”).columns.to_list()

相关问题