仅更改 pandas DataFrame 中的数值数据

changing only numerical data in pandas DataFrame

假设我有大法框架:

  text  value_1  value_2
0  egg        2        1
1  ham        4        2
2  bla        4        3

我想通过将每个值乘以 2 来只计算数字。如何省略文本列? 而不是

     text  value_1  value_2
0  eggegg        4        2
1  hamham        8        4
2  blabla        8        6

我想得到:

 text  value_1  value_2
0  egg        4        2
1  ham        8        4
2  bla        8        6

您可以 select 按 dtype 的列,并且 return 在相乘之前仅具有数字类型的列:

import numpy as np
import pandas as pd

df = pd.DataFrame({'food': ['eggs','eggs','ham','ham'],'co1':[20,19,20,21,],
  'col2': [10,10,20,20]})

已更新为 return 所有列:

df.update(df.loc[:, df.dtypes == np.int64] *2)

returns:

    co1 col2 food
0   40  20  eggs
1   38  20  eggs
2   40  40  ham
3   42  40  ham

您可以 select 使用 select_dtype 的特定数据类型列:

In [11]: df.select_dtypes(include=['int64'])
Out[11]:
   value_1  value_2
0        2        1
1        4        2
2        4        3

In [12]: df.select_dtypes(include=['int64', 'floating'])
Out[12]:
   value_1  value_2
0        2        1
1        4        2
2        4        3

这意味着您可以按如下方式更新 df:

In [21]: s = df.select_dtypes(include=['int64']) * 2

In [22]: df[s.columns] = s

In [23]: df
Out[23]:
  text  value_1  value_2
0  egg        4        2
1  ham        8        4
2  bla        8        6