如何获取包含特定dtype的pandas.DataFrame列

Cha*_*e_M 40 python pandas

我正在使用df.columns.values来创建一个列名列表然后迭代并制作图表等等......但是当我设置它时,我忽略了df中的非数字列.现在,我更不用简单地从df(或它的副本)中删除这些列.相反,我想找到一种灵活的方法来从列名列表中消除它们.

我现在有:

names = df.columns.values 
Run Code Online (Sandbox Code Playgroud)

我想要达到的是行为:

names = df.columns.values(column_type=float64) 
Run Code Online (Sandbox Code Playgroud)

有没有光滑的方法来做到这一点?我想我可以制作df的副本,并在执行columns.values之前删除那些非数字列,但这让我觉得笨重.

欢迎任何意见/建议.谢谢.

Woo*_*ide 23

有人会给你比这可能是一个更好answe,但有一件事我倾向于做的是,如果我所有的数字数据是int64或者float64对象,那么你就可以创建列数据类型的字典,然后使用这些值来创建你的列清单.

因此,例如,在一个数据帧在那里我有类型的列float64,int64object首先你可以看一下数据类型为这样:

DF.dtypes
Run Code Online (Sandbox Code Playgroud)

如果它们符合非数字数据列都是所有object类型的标准(因为它们在我的数据框中),那么您可以执行以下操作来获取数字列的列表:

[key for key in dict(DF.dtypes) if dict(DF.dtypes)[key] in ['float64', 'int64']]
Run Code Online (Sandbox Code Playgroud)

它只是一个简单的列表理解.没有什么花哨.同样,虽然这对您有用,但取决于您如何设置数据帧......


Art*_*nig 22

dtypes是熊猫系列.这意味着它包含索引和值属性.如果您只需要列名:

headers = df.dtypes.index
Run Code Online (Sandbox Code Playgroud)

它将返回一个包含"df"数据帧列名的列表.


chr*_*isb 20

0.14.1中有一个新功能select_dtypes,通过提供包含或排除的dtypes列表,按dtype 选择列.

例如:

df = pd.DataFrame({'a': np.random.randn(1000),
                   'b': range(1000),
                   'c': ['a'] * 1000,
                   'd': pd.date_range('2000-1-1', periods=1000)})


df.select_dtypes(['float64','int64'])

Out[129]: 
            a    b
0    0.153070    0
1    0.887256    1
2   -1.456037    2
3   -1.147014    3
...
Run Code Online (Sandbox Code Playgroud)


小智 7

要从python3-中的pandas数据框中获取列名,这里我是从fileName.csv文件创建一个数据框

>>> import pandas as pd
>>> df = pd.read_csv('fileName.csv')
>>> columnNames = list(df.head(0)) 
>>> print(columnNames)
Run Code Online (Sandbox Code Playgroud)