如何使用特定的dtype创建新的空pandas列?

时间:2017-01-05 18:44:18

标签: python pandas

我有一个包含df列的DataFrame 'a'。如何创建具有'b'的新列dtype=object

我知道这可能被认为是糟糕的形式,但目前我有一个数据框df,其中列'a'包含数组(每个元素都是np.array)。我想创建一个新列'b',其中每个元素都是一个新的np.array,其中包含'a'中相应元素的日志。

目前我尝试了这两种方法,但都没有奏效:

    for i in df.index:
        df.set_value(i,'b', log10(df.loc[i,'a']))

    for i in df.index:
        df.loc[i,'b'] = log10(df.loc[i,'a']))

两者都给我ValueError: Must have equal len keys and value when setting with an iterable

我假设错误发生是因为新列的dtype默认为float,尽管我可能错了。

1 个答案:

答案 0 :(得分:1)

由于列的每一行都是数组,因此最好使用标准NumPy数学函数来计算它们与基数10的元素对数:

df['log_a'] = df.a.apply(lambda x: np.log10(x))

enter image description here