我正在使用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,int64并object首先你可以看一下数据类型为这样:
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)