和变量取决于范围

时间:2018-03-16 10:14:33

标签: python pandas numpy

我有一个数据集,其中每部电影的每日总票数和生产预算都已注册。

我尝试用它找到每部电影的回收期。这是我的

min{i: 0 < i < Len(gm) and sum from j=0 to i of gm j >= Production Budget}

运行此代码时,会发生以下错误。

  

'int'对象不能下标

我的其他代码是:

    for n in range (0, 4798+1):
    min(sum([grouped['Gross']])>= 'Production Budget' for grouped in range(0, 5285+1))

        genre   movie   Date    Gross   Days
    0   Action  0   2009-12-18  26752099    1
    1   Action  0   2009-12-19  25529036    2
    2   Action  0   2009-12-20  24744346    3
    3   Action  0   2009-12-21  16385820    4
    4   Action  0   2009-12-22  16086461    5

    genre   mid movie_title Release Date    Production Budget   
    0   Action  0   Avatar  2009-12-18  425000000   
    1   Adventure   2   Pirates of the Caribbean    2007-05-24  300000000   
    2   Action  3   Spectre 2015-11-06  300000000   

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以映射预算并按结果使用pd.Series.cumsum分组。

budgets = df_budget.set_index('movie_title')['Production Budget']
df_gross['CumGross'] = df_gross.groupby('movie')['Gross'].cumsum()

mask = df_gross['CumGross'] > df_gross['movie'].map(budgets)

pay_back_days = df_gross.loc[mask, ['movie', 'Days']]\
                        .drop_duplicates('movie')\
                        .set_index('movie')['Days']