首页 > 解决方案 > 使用 Pandas 或 SQL 根据订阅时长计算收入?

问题描述

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

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

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

抱歉,如果问题不清楚,云找不到更好的解释方法。

标签: pythonsqlpandas

解决方案


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

看看这段代码是否可以帮助你:

# 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

推荐阅读