在过去的三个多月里,我一直在使用熊猫进行数据分析(并自学熊猫)
我有一个熊猫数据帧,如下所示:
df
client_id opp_id opportunity_status
4312 80465 Closed Won
4312 34508 Closed Won
4312 56478 Pending
3456 29930 Closed Lost
3456 70331 Pending
3456 65203 Closed Won
5203 29930 Closed Lost
5203 70331 Pending
5203 65203 Closed Lost
5203 65203 Closed Lost
我想高效地创建第二个数据帧:
has_cw
client_id has_closed_won_opp
4312 True
3456 True
5203 False
其中has_cw.client_id
是来自df.client_id
的唯一值,has_cw.has_closed_won_opp
是布尔值列表,其中True
表示df
中至少有一个“已结束赢得”机会
我很难想出一个好的方法来做这件事,除了以这种方式低效地循环通过df
:
has_cw = dict()
for id in df.client_id.unique():
has_cw_bool = 'Closed Won' is in list(df[df['client_id'] == id]['opportunity_status'])
has_cw[id] = has_cw_bool
然后将has_cw
dict转换为数据帧
我怎样才能有效地做到这一点?提前谢谢
您可以使用
groupby.agg
,为每个客户机id检查机会状态是否等于已关闭赢的:或更快的版本:
相关问题 更多 >
编程相关推荐