Pandas,将数据框中的所有数值乘以一个常数
如何将数据框中的所有数值乘以一个常量而不必显式指定列名?例:
In [13]: df = pd.DataFrame({'col1': ['A','B','C'], 'col2':[1,2,3], 'col3': [30, 10,20]})In [14]: df
Out[14]:
col1 col2 col3
0 A 1 30
1 B 2 10
2 C 3 20
我尝试过,df.multiply
但是它也会通过多次连接来影响字符串值。
In [15]: df.multiply(3)Out[15]:
col1 col2 col3
0 AAA 3 90
1 BBB 6 30
2 CCC 9 60
有没有办法在仅将数字值乘以常数的同时保留字符串值的完整性?
回答:
您可以使用select_dtypes()包括number
dtype或排除object
和datetime64
dtypes的所有列:
演示:
In [162]: dfOut[162]:
col1 col2 col3 date
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
Out[163]:
col1 object
col2 int64
col3 int64
date datetime64[ns]
dtype: object
In [164]: df.select_dtypes(exclude=['object', 'datetime']) * 3
Out[164]:
col2 col3
0 3 90
1 6 30
2 9 60
或更好的解决方案(c)ayhan:
df[df.select_dtypes(include=['number']).columns] *= 3
从文档:
要选择所有数字类型,请使用numpy dtype numpy.number
以上是 Pandas,将数据框中的所有数值乘以一个常数 的全部内容, 来源链接: utcz.com/qa/419222.html