【问题标题】:Use Pandas or SQL to calculate Revenue based on subscription duration?使用 Pandas 或 SQL 根据订阅时长计算收入?
【发布时间】:2019-07-24 23:05:46
【问题描述】:

我正在尝试使用具有以下字段的 csv 根据收入计算一些月度业务指标:客户 ID、订阅开始、订阅持续时间和订阅价值。

由于我需要对过去几个月进行比较(例如,如果特定客户的收入减少了),我最初的想法是为每个月创建新列并基于这些列,使用 panda 来查找值并将它们存储在这些指标的新表中。

你们认为这是最好的方法还是最好尝试使用 SQL 来获取这些指标?

对不起,如果问题不清楚,cloudn找不到更好的解释方法。

【问题讨论】:

    标签: python sql pandas


    【解决方案1】:

    我不确定我是否完全理解您的问题,但看起来您需要一种方法来在客户价值的当前日期和过去日期之间进行迭代。

    看看这段代码能不能帮到你:

    # example DataFrame
    df = pd.DataFrame({'date':[1,2,3,1,2,3],
                       'client':['c1', 'c1', 'c1', 'c2', 'c2', 'c2'],
                       'value':[123, 234, 123, 456, 345, 678]})
    # Set index to access items faster
    df.set_index(['client', 'date'], inplace=True)
    
    # iteract each item
    delta = []
    for client in df.index.levels[0]:
        for date in df.index.levels[1]:
            # if the item do not exist on index, nothing happens
            try:
                current = df.loc[client].loc[date]['value']
                # if there isnt past date, delta is zero, but uou can change it
                try:
                    before = df.loc[client].loc[date-1]['value']
                    delta.append(current - before)
                except:
                    delta.append(0)
            except:
                pass
    
    df['delta'] = delta
    df
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2015-07-03
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2019-01-19
      相关资源
      最近更新 更多