我有一个数据集,其中每部电影的每日总票数和生产预算都已注册。
我尝试用它找到每部电影的回收期。这是我的
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
提前致谢
答案 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']