【问题标题】:How to raise a column in pandas DataFrame to consecutive powers如何将pandas DataFrame中的列提升为连续幂
【发布时间】:2019-10-11 20:22:09
【问题描述】:

有没有一种 Pythonic 方法可以将 DataFrame (xRaw) 中的列提升为连续幂?有没有类似的东西

xRaw[:,k] = xRaw.pow(k) for k in range(1,6)

【问题讨论】:

    标签: python pandas numpy pow


    【解决方案1】:

    这是一个Vandermonde矩阵,numpy内置函数np.vander

    如果你有

    s = pd.Series([1,2,3,4,5])
    

    然后

    np.vander(s, 6)
    

    array([[   1,    1,    1,    1,    1,    1],
           [   1,    2,    4,    8,   16,   32],
           [   1,    3,    9,   27,   81,  243],
           [   1,    4,   16,   64,  256, 1024],
           [   1,    5,   25,  125,  625, 3125]])
    

    要添加回df,您可以使用concat

    df = pd.concat([df, pd.DataFrame(vander)], axis=1)
    

    【讨论】:

    • 这如何将现有数据框的一行提升到各种权力?
    【解决方案2】:

    Numpy 广播

    s.values**np.arange(6)[:,None]
    Out[70]: 
    array([[   1,    1,    1,    1,    1],
           [   2,    4,    8,   16,   32],
           [   3,    9,   27,   81,  243],
           [   4,   16,   64,  256, 1024],
           [   5,   25,  125,  625, 3125]], dtype=int64)
    

    重新分配

    s= pd.concat([s, pd.DataFrame(s.values**np.arange(6)[:,None],index=s.index)], axis=1)
    

    【讨论】:

      【解决方案3】:

      我愿意:

      for i in range(6):
          xRaw["power: "+str(i)] = xRaw[column_to_be_raised] ** i
      

      这将生成一个新列,该列的基数来自您要为给定范围内的每个指数提升的列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 2020-03-22
        • 1970-01-01
        相关资源
        最近更新 更多