首页 > 解决方案 > 数据框将 Numpy 数组添加到数据框的行数

问题描述

我正在使用 Numpy 来计算一些公式。我需要一个包含更多细节的数据帧结果。

我尝试了类似df_append.append在数据框中加载数据的方法。

df_cars = pd.DataFrame(data= None,['CarName', "ModelName",'Month', 'values'])

for(carname in cars):
    modelsnames = getModels(car)
    for(modelname in Models):
        values=np.array(get_values(car,model))
        #values = [1,5,6,9,10,2,10,7,23,90,102,14]
        new_row={'CarName' :carname ,"ModelName": modelname, 'Month':np.arange(1,len(index)+1), 'value':index}
        df_cars = df_cars.append(new_row, ignore_index=True)

但是 numpy 值将其保存在一个单元格中(Numpy 公式的结果)

例子:

numpy values_BMW_Serie1:[45000,44000,41000,45000,42000]

   Car   Model    Month  value
1  BMW   Serie1   1       [45000,44000,41000,45000,42000]

我需要将每个 numpy 值保存在一个单元格中

   Car   Model    Month  value
1  BMW   Serie1   1       45000
2  BMW   Serie1   2       44000
3  BMW   Serie1   3       41000
4  BMW   Serie1   4       45000
5  BMW   Serie1   5       42000

标签: pythonpandasnumpydataframerows

解决方案


要解决您的问题,请使用以下explode()功能:

import numpy as np

df_cars=df_cars.explode('value')

df_cars.index = np.arange(1, len(df_cars) + 1)

df_cars['Month']=df_cars.index

输出:

   Car   Model  Month  value
1  BMW  Serie1      1  45000
2  BMW  Serie1      2  44000
3  BMW  Serie1      3  41000
4  BMW  Serie1      4  45000
5  BMW  Serie1      5  42000

您可以在pandas.DataFrame.explode上阅读有关explode()函数的更多信息


推荐阅读