仅在数据框中计算几列的LOG10

时间:2019-11-25 11:56:23

标签: python pandas numpy

我想将给定的观测值转换为log10。

这是我DF的负责人: enter image description here

我只想为HR90和左边的字段计算log10。我试图只选择正确的列,但是我总是会出错,并且我认为我的代码太复杂了。

这是我的代码:

for i[9:] in data.columns:
 np.log10(data)

AttributeError:'str'对象没有属性'log10'

似乎它仍然可以获取我不想在其上运行此过程的列。  我也尝试导入数学,然后:

import math
for i in data.columns:
    if(data[i].dtype == np.float64 or data[i].dtype == np.int64):
        data.applymap(math.log10)

但是我得到了:

  

TypeError :(“必须是实数,而不是str”,“发生在索引NAME”)

我的最终目标是将部分观察结果转换为LOG10

3 个答案:

答案 0 :(得分:1)

简单

data[data.columns[:9]] = np.log10(data[data.columns[:9]])

所有索引为0到8(包括索引)的列都将采用log10。

答案 1 :(得分:0)

如果该列保留为“ HR90”或等于“ HR90”,则可以使用get_loc来应用对数图。

123

答案 2 :(得分:0)

你的意思是这样吗?

df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
>>>>
A   B   C   D
0   19  44  16  46
1   25  35  35  51
2   11  67  3   27
3   42  63  81  64
4   91  70  2   77

df[['A', 'B', 'C']] = df[['A', 'B', 'C']].apply(np.log10)
>>>
    A           B           C           D
0   0.106787    0.215757    0.080670    46
1   0.145489    0.188666    0.188666    51
2   0.017615    0.261519    -0.321371   27
3   0.210385    0.255113    0.280689    64
4   0.292044    0.266019    -0.521390   77
5   0.263046    0.223262    0.204679    63

这也会给您带来相同的效果

df[df.columns[:3]] = df[df.columns[:3]].apply(np.log10)