pandas 将对象转换为数据框,它在每个单元格中给我值、名称和数据类型

hlswsv35  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(87)
  • 我正在运行一个for循环,对多项数据集中的每项进行回归。
  • 我想输出在np.arrange中设置的参数的最大收入点处的价格点。
  • 下面是我正在使用的代码:
upc_modelfit_summary = []
upcs = df['upc'].unique()

for x in upcs:
    
    df_upc = df[(df['upc'] == x)]     
    max_val = df_upc['arp_np'].max()
    min_val = df_upc['arp_np'].min()
    price = np.arange(min_val, max_val, 0.1)
    cost = .50
    model = ols("units_np ~ arp_np", data=df_upc).fit()
    quantity = []
    revenue = []
    
    for i in price:
     demand = model.params[0] + (model.params[1] * i)
     quantity.append(demand)
     revenue.append((i-cost) * demand)
    profit = pd.DataFrame({"Price": price, "Revenue": revenue, "Quantity": quantity, "UPC": x})
    max_val = profit.loc[(profit['Revenue'] == profit['Revenue'].max())]
    upc_modelfit_summary.append(
        {
            'Price': max_val['Price'],
            'Revenue': max_val['Revenue'],
            'Quantity': max_val['Quantity'],
            'UPC': max_val['UPC']
        })

a= pd.DataFrame(upc_modelfit_summary)
a

我想创建一个数据框,编译价格,收入,数量和upc的每一个项目是循环。
由于某种原因,当将其转换为 Dataframe 时,它会给我每个单元格值的值、名称和数据类型(见图)
有没有更好的方法来实现这个目标?理想情况下,最终结果将是一个可以以某种方式导出的df。

Price   Revenue Quantity    UPC
0   4 4.49 Name: Price, dtype: float64  4 3.99 Name: Revenue, dtype: float64    4 1.0 Name: Quantity, dtype: float64    4 00-28400-04330 Name: UPC, dtype: object

lvjbypge

lvjbypge1#

问题是你要把整个 Dataframe max_val[Col]添加到upc_modelfit_summary字典中,而不仅仅是值。

upc_modelfit_summary.append(
    {
        'Price': max_val['Price'].values[0] if max_val['Price'].values.size > 0 else np.nan,
        'Revenue': max_val['Revenue'].values[0] if max_val['Revenue'].values.size > 0 else np.nan,
        'Quantity': max_val['Quantity'].values[0] if max_val['Quantity'].values.size > 0 else np.nan,
        'UPC': max_val['UPC'].values[0] if max_val['UPC'].values.size > 0 else np.nan
    })

相关问题