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()包括numberdtype或排除objectdatetime64dtypes的所有列:

演示:

In [162]: df

Out[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

回到顶部