【发布时间】:2017-07-09 15:16:47
【问题描述】:
我有一个数据框和一系列费率。我的计算很简单:
new_row(n) = new_row(n-1)*rate + old_row(n)
我的数据框中有 20 列。 rate 是一系列 20(每列 1)。我已经使用循环编写了一个代码,它需要将近 9 秒才能运行。我相信,这不是做这个练习的理想方式。我想找到一种 Pythonic 的方法。
data = pd.read_csv('data.csv')
ret_rate = pd.read_csv('Retention_Rate.csv')
ret_dat = data.copy()
for i in range(4, ret_dat.shape[1]):
for j in range(1, ret_dat.shape[0]):
if (ret_dat['MARKET_ID'][j] == ret_dat['MARKET_ID'][j-1]):
ret_dat.iloc[j, i] = ret_dat.iloc[j, i] + ret_rate.iloc[i-4,0]*ret_dat.iloc[j-1, i]
ret_dat.to_csv('adstock_data_v3.csv')
我已经把数据in a Google sheet.
【问题讨论】:
-
感谢您提出这个问题。它帮助我解决了类似的问题
标签: python pandas dataframe statistics time-series