【问题标题】:Create DataFrame with a loop-based numpy array使用基于循环的 numpy 数组创建 DataFrame
【发布时间】:2020-10-22 12:25:26
【问题描述】:

我正在执行一个 for 循环来计算统计值。为此,我将列中的计算存储在不同的变量(D10、D50 和 D90)中。

然后我将它们存储在一个名为 result 的数组中

# First created an empty numpy array

result_array = np.array([])

for column in df:
    
    # just computations you can ignore them

    df = df.sort_values('Size')
    
    cumul = df[column].cumsum()
    
    suma_de_frecuencias = df[column].sum()
    
    D10 = sum(cumul < 0.1 * float(suma_de_frecuencias))
    
    D50 = sum(cumul < 0.5 * float(suma_de_frecuencias))
    
    D90 = sum(cumul < 0.9 * float(suma_de_frecuencias))
    
    # List of statistics values i am trying to get
    
    D10 = df['Size'].iloc[D10]
    
    D50 = df['Size'].iloc[D50]
    
    D90 = df['Size'].iloc[D90]

    
    # Storing values in an array

    result = [D10, D50, D90]
    
    # Appending each "result" in "result_array"

    result_array = np.append(result_array, result)

但是当我尝试创建一个数据框时,代码结果是一个错误

dataset = pd.DataFrame(data=result_array[1:,1:],index=result_array[1:,65],column=result_array[0,1:])

它会导致第 40 行中的 IndexError Traceback 用于数据集

说:

IndexError: 数组索引过多

IndexError

我想得到的是这样的:

"""    
        'D10'  |  'D50'  |  'D90'
   0 |  value  |  value  |  value    <--- the first computated array "result"
   1 |  value  |  value  |  value    <--- the first computated array "result"
   2 |  value  |  value  |  value    <--- the first computated array "result"
   3 |  value  |  value  |  value  
   .
   .
   .

"""

【问题讨论】:

    标签: python arrays pandas numpy append


    【解决方案1】:

    问题在于您索引一维数组。

    result_array 是一个简单的 (n * 1) 数组,不能索引到更多列中。

    尝试如下追加一个多维数组-

    result_array = result_array.reshape(len(result_array)//3,3)
    

    创建数据框

    dataset = pd.DataFrame(data = result_array, columns = ['D10', 'D50', 'D90'])
    

    输出 -

    请注意,我已经使用示例值创建了数据框。

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多