【问题标题】:Changing numpy array size based on data根据数据更改 numpy 数组大小
【发布时间】:2020-09-20 18:14:47
【问题描述】:

我有以下数据集作为数据框。

BinSize   Data
   5       x1
   5       x2
   10      x3
   10      x4

我希望创建的数据只有“5”的 bin 大小。所以我基本上想将第二列除以第一列并乘以 5。我目前正在通过“for”循环进行操作,并分配一个新的 numpy 数组。想知道有没有有效的方法

BinSize    Data
   5         x1
   5         x2
   5         x3*5/10
   5         x3*5/10
   5         x4*5/10
   5         x4*5/10
  

【问题讨论】:

    标签: python numpy dataframe


    【解决方案1】:

    如果我理解正确你应该可以直接对数据框进行操作:

    import pandas as pd
    df = pd.DataFrame({'BinSize': [5, 5, 10, 10], 'Data': [1, 2, 3, 4]})
    df['Data'] = (df['Data'] /df['BinSize']) * 5
    

    编辑:

    为了发布一些比上面更有用的东西,这里它在一行中,但是 a)它仅在起始 binsize 是 5 的倍数时才有效,并且 b)它很长且难以阅读,所以你已经可能更可取。我在 pandas 库中看不到任何可以使用的东西。

    df = pd.DataFrame({'BinSize': [5, 5, 15, 10], 'Data': [1, 2, 3, 4]})
    df = [pd.concat(pd.DataFrame(np.tile([binsize * 5 / binsize,
                                          data * 5 / binsize],
                                         (int(binsize / 5), 1)),
                                 columns=['BinSize', 'Data']) for data, binsize in zip(df['Data'], df['BinSize']))][0]
    
    

    【讨论】:

    • 我需要一个新的数据框,有六行。
    猜你喜欢
    • 2020-10-29
    • 2020-02-29
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2017-07-14
    相关资源
    最近更新 更多