如何将数据帧中的所有数值乘以常数,而不必显式指定列名?例如:
[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或排除object和datetime64dtypes的所有列:
演示:
[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