按SFrame列记录值

Guf*_*oru 5 logarithm dataframe pandas

请问,有人可以告诉我,如何从SFrame,graphlab(或DataFrame,pandas)列中的每个值中取对数,而不是遍历SFrame列的整个长度?我特别感兴趣的是类似的功能,比如Groupby Aggregators的日志功能.找不到自己......

重要提示:请不要对for-loop列的整个长度进行迭代.我只对特定函数感兴趣,它将所有值转换为整列的日志值.

如果此功能在手册中,我也很抱歉.请给我一个链接......

cel*_*cel 5

numpy提供了大量基本数学变换的实现.您可以在基于numpy的所有数据结构上使用它们ndarray.

import pandas as pd
import numpy as np
data = pd.Series([np.exp(1), np.exp(2), np.exp(3)])
np.log(data)
Run Code Online (Sandbox Code Playgroud)

输出:

0    1
1    2
2    3
dtype: float64
Run Code Online (Sandbox Code Playgroud)

此示例适用于pandas数据类型,但适用于所有基于numpy数组的数据结构.


pap*_*ior 5

同样的“应用”模式也适用于 SFrame。你可以这样做:

import graphlab
import math

sf = graphlab.SFrame({'a': [1, 2, 3]})
sf['b'] = sf['a'].apply(lambda x: math.log(x))
Run Code Online (Sandbox Code Playgroud)