仅舍入pandas.DataFrame忽略字符串的数字元素

时间:2015-08-29 00:17:46

标签: python pandas

我有这个DataFrame:

import pandas as pd
df = pd.DataFrame({'x':["ab", "cd"],'a':[1.1111,2.2222], 'b':[2.2222,3.3333], 'c':[3.3333,4.4444]})

使用忽略字符串元素仅对数字元素进行舍入的简单方法是什么?

我已经阅读了几篇关于SO的讨论并尝试了这一点,但却出错了。

import numpy as np
np.round(df) # => AttributeError: 'str' object has no attribute 

' RINT'

我想保存DataFrame,如下所示:

pd.DataFrame({'x':["ab", "cd"],'a':[1.11,2.22], 'b':[2.22,3.33], 'c':[3.33,4.44]})

2 个答案:

答案 0 :(得分:8)

您可以使用df.select_dtypes(include=[np.number])选择DataFrame的数字列,使用np.round对数字子DataFrame进行舍入,使用df.loc将这些值分配给原始DataFrame:< / p>

df = pd.DataFrame({'x':["ab", "cd"],'a':[1.1111,2.2222], 'b':[2.2222,3.3333], 
                   'c':[3.3333,4.4444]})

tmp = df.select_dtypes(include=[np.number])
df.loc[:, tmp.columns] = np.round(tmp)

产量

   a  b  c   x
0  1  2  3  ab
1  2  3  4  cd

答案 1 :(得分:1)

>>> df[['a', 'b', 'c']] = np.round(df[['a', 'b', 'c']], 2)
>>> df
      a     b     c   x
0  1.11  2.22  3.33  ab
1  2.22  3.33  4.44  cd