繁体   English   中英

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

[英]How to get pandas.DataFrame columns containing specific dtype

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

我现在有:

names = df.columns.values 

我想要达到的是行为:

names = df.columns.values(column_type=float64) 

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

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

有人会给你一个比这更好的回答,但我倾向于做的一件事是,如果我的所有数值数据都是int64float64对象,那么你可以创建列数据类型的dict,然后使用这些值创建你的列表列。

因此,例如,在我拥有float64int64object类型的列的数据float64 ,您首先可以查看数据类型:

DF.dtypes

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

[key for key in dict(DF.dtypes) if dict(DF.dtypes)[key] in ['float64', 'int64']]

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

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

headers = df.dtypes.index

它将返回一个包含“df”数据帧列名的列表。

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

例如:

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
...

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

>>> import pandas as pd
>>> df = pd.read_csv('fileName.csv')
>>> columnNames = list(df.head(0)) 
>>> print(columnNames)

您还可以尝试从panda数据框中获取列名,并返回列名和dtype。 在这里,我将从https://mlearn.ics.uci.edu/databases/autos/imports-85.data读取csv文件,但您已定义包含列名称的标头。

import pandas as pd

url="https://mlearn.ics.uci.edu/databases/autos/imports-85.data"

df=pd.read_csv(url,header = None)

headers=["symboling","normalized-losses","make","fuel-type","aspiration","num-of-doors","body-style",
         "drive-wheels","engine-location","wheel-base","length","width","height","curb-weight","engine-type",
         "num-of-cylinders","engine-size","fuel-system","bore","stroke","compression-ratio","horsepower","peak-rpm"
         ,"city-mpg","highway-mpg","price"]

df.columns=headers

print df.columns

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM