我有一个名为product
的DataFrame,其中包含订单、产品和每个产品的数量列表。
我需要创建一个新的DataFrame,其中每个产品名称对应一行,另外两列分别对应订购产品的总和(基本上是每个产品quantity
列上的总和)和每个产品的总销售额(每个产品total
列上的总和)。
我做了这个函数:
products_unique = products['product_id'].unique()
names = [
products.loc[
products['product_id'] == elem
]['name'].unique()
for elem in products_unique
]
orders = [
len(products.loc[
products['product_id'] == elem
])
for elem in products_unique
]
totals = [
products.loc[
products['product_id'] == elem
]['total'].sum()
for elem in products_unique
]
chart_data = pd.DataFrame({
'Prodotti': products_unique,
'Nome': names,
'Ordini': orders,
'Totale': totals
})
现在,这个函数和我想的一样,但是有一点我不明白。当我运行它的时候,我得到了这个:
如您所见,列names
中的值是list
类型,为什么会发生这种情况?
此外,有没有更干净的方法来实现我正在建设的东西?
感谢所有愿意帮助我的人!
2条答案
按热度按时间jdzmm42g1#
k10s72fa2#
使用
groupby_agg
:输出: