然后,将数据帧中的所有数值乘以一个常数

如何将数据帧中的所有数值乘以常数,而不必显式指定列名?例如:

[13]on

:df=pd.DataFrame({'col1':['A','B','C','col2':[1,2,3],'col3':[30,10,20]})
In[14]:df
Output[14]:
col1 col2 col3
0 A 130
1 B 2 10
2 C 3 20

我尝试了df.multiply,但它也会通过多次串联字符串值来影响它们

[15]on

:df.乘法(3)
Output[15]:
col1 col2 col3
0 AAA 3 90
1 BBB 6 30
2 CCC 9 60

是否有一种方法可以在仅将数值乘以常数的同时保持字符串值不变

您可以使用select_dtypes(),包括numberdtype或排除objectdatetime64dtypes的所有列:

演示:

[162]on

:df
Output[162]:
col1 col2 col3日期
0 A 1 30 2016-01-01
1 B 2 10 2016-01-02
2 C 3 20 2016-01-03
In[163]:df.dtypes
Output[163]:
col1对象
col2 int64
col3 int64
日期时间64[ns]
数据类型:对象
At[164]on:df.选择数据类型(排除=['object','datetime'])*3
Output[164]:
COL2COL3
0     3    90
1     6    30
2     9    60

或者更好的解决方案(c)ayhan:

df[df.选择数据类型(包括=['number'])。列]*=3

从文档:

要选择所有数字类型,请使用numpy数据类型numpy.number

发表评论