Python 如何在dataframe中获取数字列名
我有一个数据帧,它有Python 如何在dataframe中获取数字列名,python,pandas,Python,Pandas,我有一个数据帧,它有对象、int64、float64数据类型。我想获取int64和float64列的列名。我在熊猫中使用以下命令,但它似乎不起作用 cat_num_prv_app = [num for num in list(df.columns) if isinstance(num, (np.int64,np.float64))] 以下是我的数据类型 df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 16
对象、int64、float64
数据类型。我想获取int64和float64
列的列名。我在熊猫中使用以下命令,但它似乎不起作用
cat_num_prv_app = [num for num in list(df.columns) if isinstance(num, (np.int64,np.float64))]
以下是我的数据类型
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1670214 entries, 0 to 1670213
Data columns (total 37 columns):
ID 1670214 non-null int64
NAME 1670214 non-null object
ANNUITY 1297979 non-null float64
AMOUNT 1670214 non-null float64
CREDIT 1670213 non-null float64
df.info()
范围索引:1670214个条目,0到1670213
数据列(共37列):
ID 1670214非空int64
名称1670214非空对象
年金1297979非空浮动64
金额1670214非空浮动64
贷记1670213非空浮动64
我想将列名ID、年金、金额和信用
存储在一个变量中,我可以稍后使用它来子集数据框。与np.number一起使用
选择所有数字列:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4.5,5,4,5,5,4],
'C':[7.4,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':list('aaabbb')})
print (df)
A B C D E
0 a 4.5 7.4 1 a
1 b 5.0 8.0 3 a
2 c 4.0 9.0 5 a
3 d 5.0 4.0 7 b
4 e 5.0 2.0 1 b
5 f 4.0 3.0 0 b
print (df.dtypes)
A object
B float64
C float64
D int64
E object
dtype: object
cols = df.select_dtypes([np.number]).columns
print (cols)
Index(['B', 'C', 'D'], dtype='object')
这里可以指定float64
和int64
:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4.5,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':list('aaabbb')})
df['D'] = df['D'].astype(np.int32)
print (df.dtypes)
A object
B float64
C int64
D int32
E object
dtype: object
cols = df.select_dtypes([np.int64,np.float64]).columns
print (cols)
Index(['B', 'C'], dtype='object')
使用“np.where”的替代解决方案 (但比批准的答案更难看)
df.iloc[:,(np.where((df.dtypes==np.int64)|(df.dtypes==np.float64))[0]]列
示例代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [1, 2, 3], "B": [1.0, 2.0, 3.0], "C": ["a", "b", "c"]})
print(df.iloc[:, (np.where((df.dtypes == np.int64) |
(df.dtypes == np.float64)))[0]].columns)
> Index(['A', 'B'], dtype='object')
你能提供一个
df.columns
的例子,以及你对它的预期结果吗?我在哪里犯了错误?@Neil-你的列表理解
按列名循环,在我的示例a,B,C,D,E
,因此它无法工作。