In [2]: df
Out[2]:
a b c d e f g
0 0.191519 0.785359 6 0 7578569 False 2000-01-01
1 0.622109 0.779976 8 1 7981439 True 2000-01-02
2 0.437728 0.272593 0 2 2558462 True 2000-01-03
In [3]: df.dtypes
Out[3]:
a float64
b float32
c int16
d int32
e int64
f bool
g datetime64[ns]
dtype: object
选择所有浮点数列:
In [4]: df.select_dtypes(include=['floating'])
Out[4]:
a b
0 0.191519 0.785359
1 0.622109 0.779976
2 0.437728 0.272593
In [5]: df.select_dtypes(include=['floating']).dtypes
Out[5]:
a float64
b float32
dtype: object
选择所有整数列:
In [6]: df.select_dtypes(include=['integer'])
Out[6]:
c d e
0 6 0 7578569
1 8 1 7981439
2 0 2 2558462
In [7]: df.select_dtypes(include=['integer']).dtypes
Out[7]:
c int16
d int32
e int64
dtype: object
选择所有数值列:
In [8]: df.select_dtypes(include=['number'])
Out[8]:
a b c d e
0 0.191519 0.785359 6 0 7578569
1 0.622109 0.779976 8 1 7981439
2 0.437728 0.272593 0 2 2558462
In [9]: df.select_dtypes(include=['number']).dtypes
Out[9]:
a float64
b float32
c int16
d int32
e int64
dtype: object
9条答案
按热度按时间yvfmudvl1#
从0.14.1开始,有一个
select_dtypes
方法,所以你可以更优雅/更一般地完成这个任务。要选择所有数值类型,请使用numpy数据类型numpy.number
chhkpiq42#
6xfqseft3#
eqoofvh94#
我想通过添加选择 * 所有浮点 * 数据类型或 * 所有整数 * 数据类型的选项来扩展现有答案:
演示:
产量:
选择所有浮点数列:
选择所有整数列:
选择所有数值列:
t30tvxxf5#
用于选择具有类型列表的列的多个包含,例如-float 64和int 64
bxjv4tth6#
选择数据类型(包括=[np.int])
lskq00tm7#
如果要选择int64列,然后更新“in place”,可以用途:
例如,请注意我将df中的所有int64列更新为零,如下所示:
仅供参考:
df.loc()和df.select_dtypes()将从 Dataframe 中给予一个切片的副本,这意味着如果你试图更新df.select_dtypes()中的值,你将得到一个SettingWithCopyWarning,并且不会对df进行任何更新。
例如,请注意,当我尝试使用.loc()或.select_dtypes()更新df来选择列时,什么也没发生:
nkkqxpd98#
或者,如果您不想在此过程中创建 Dataframe 的子集,可以直接迭代列数据类型。
我还没有基准测试下面的代码,假设它会更快,如果你的工作非常大的数据集。
ryevplcw9#
您可以使用:
如果你只想显示一个特定 Dataframe 的列名,而不是一个切片 Dataframe 。不知道python是否存在这样的函数。
PS:用你想要的数据类型替换
object
。