仅更改pandas DataFrame中的数值数据

时间:2015-02-06 22:28:57

标签: python pandas

假设我有DafaFrame:

  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

2 个答案:

答案 0 :(得分:4)

您可以使用select_dtype:

选择特定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

答案 1 :(得分:2)

您可以按dtype选择列,并在乘以之前仅返回带有数字类型的列:

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]})

更新以返回所有列:

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

返回:

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