我想将给定的观测值转换为log10。
我只想为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
答案 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)