数据框如下所示:
df.columns = ['ReportDate', 'ClientId', 'ClientRevenue']
我想得到所有客户的名单报告收入较高的b/w 2日期。下面是一些未经测试的大纲代码,但不知道是否有更直接的python方法:
enddatedf = df.loc[df['ReportDate'] == endDate]
startdatedf = df.loc[df['ReportDate'] == startDate]
endclients = enddatedf['ClientId'].unique()
startclients = startdatedf['ClientId'].unique()
commonclients = list(set(startclients).intersect(set(endclients)) #because clients might have dropped off in b/w
risingclients = []
for client in commonclients:
startrevenue = startdatedf.loc[startdatedf['ClientId'] == client, 'ClientRevenue'].values[0]
endrevenue = enddatedf.loc[enddatedf['ClientId'] == client, 'ClientRevenue'].values[0]
if endrevenue > startrevenue:
risingclients.append(client)
谢谢
正在创建数据。请在问题中提供数据。:)
第一步是为startdate和enddate过滤df。你知道吗
接下来,对数据帧进行排序,以便按日期顺序将客户机放在一起。你知道吗
接下来,从enddate ClientRevenue中减去startdate ClientRevenue。如果值为正,则客户在这两个日期之间有增长。你知道吗
最后,过滤结果数据帧中的正'ClientRevenue',并将索引('ClientId')放到列表中。你知道吗
编辑 我错过了关于客户下车的部分,但我回去测试了,它仍然有效。你知道吗
正在添加ClientId=0,但只有startdate。你知道吗
计算结果为:
相关问题 更多 >
编程相关推荐