填写下面的Pandas代码以创建一个新的数据框customer_spend,该数据框按此顺序包含以下几列:customer_id,name和total_spend。 total_spend是一个新列,其中包含特定客户下达的所有订单的成本之和。
我正在上与Python Pandas相关的在线课程。如我上面所写,此代码的目标是制作一个名为“ customer_spend”的新数据框,其中包含有customer_id,name和total_spend列。
我遇到的麻烦是,仅使用两个不同的现有数据框的一部分来构建数据框。我尝试合并,但它占用现有数据帧的每一列。此外,我在将列重命名为“ total_spend”时遇到困难。
import pandas as pd
import numpy as np
customers = pd.DataFrame([[100, 'Prometheus Barwis', 'prometheus.barwis@me.com',
'(533) 072-2779'],[101, 'Alain Hennesey', 'alain.hennesey@facebook.com',
'(942) 208-8460'],[102, 'Chao Peachy', 'chao.peachy@me.com',
'(510) 121-0098'],[103, 'Somtochukwu Mouritsen',
'somtochukwu.mouritsen@me.com','(669) 504-8080'],[104,
'Elisabeth Berry', 'elisabeth.berry@facebook.com','(802) 973-8267']],
columns = ['customer_id', 'name', 'email', 'phone'])
orders = pd.DataFrame([[1000, 100, 144.82], [1001, 100, 140.93],
[1002, 102, 104.26], [1003, 100, 194.6 ], [1004, 100, 307.72],
[1005, 101, 36.69], [1006, 104, 39.59], [1007, 104, 430.94],
[1008, 103, 31.4 ], [1009, 104, 180.69], [1010, 102, 383.35],
[1011, 101, 256.2 ], [1012, 103, 930.56], [1013, 100, 423.77],
[1014, 101, 309.53], [1015, 102, 299.19]],
columns = ['order_id', 'customer_id', 'order_total'])
combined = pd.merge(customers,orders, on='customer_id')
grouped = combined.groupby('customer_id')['order_total']
grouped.aggregate(np.sum).reset_index()
所需结果:名为“ customer_spend”的数据框,其中包含customer_id,name和total_spend列。 total_spend是一个新列,其中包含order_total的总和。
到目前为止,我所拥有的:只有customer_id和order_total。
我还是这个社区的新手。如果我做不适当的事情,请告诉我。 谢谢。
答案 0 :(得分:2)
首先考虑将orders
与customer_id
进行汇总,然后将生成的customer_id
索引的DataFrame合并到customers
的所需列上:
cust2spend = orders.groupby('customer_id').sum()[['order_total']].reset_index()
cust2spend
customer_id order_total
100 1211.84
101 602.42
102 786.80
103 961.96
104 651.22
# Before merging, rename the order_total column to total_spend.
# Note that axis=1 could also be axis='columns'.
cust2spend.rename({'order_total': 'total_spend'}, axis=1, inplace=True)
pd.merge(customers[['customer_id', 'name']], cust2spend, on='customer_id')
customer_id name total_spend
0 100 Prometheus Barwis 1211.84
1 101 Alain Hennesey 602.42
2 102 Chao Peachy 786.80
3 103 Somtochukwu Mouritsen 961.96
4 104 Elisabeth Berry 651.22
答案 1 :(得分:0)
<ul class="sub-menu" style="display: block;">
<li class="dropdown @CurrentControllerActiveClassName("Option")">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">@Manager.Resource.Value("ABC000") </a>
<ul class="sub-menu">
<li>@Html.ActionLink(Manager.Resource.Value("ABC001"), "Import", "Others Country")</li>
<li>@Html.ActionLink(Manager.Resource.Value("ABC002"), "Apply", "Accept")</li>
<li>@Html.ActionLink(Manager.Resource.Value("ABC003"), "Terminate", "Stop Purchasing")</li>
</ul>
</li>
</ul>
如果不是必须使用合并,请尝试此操作。