我有一个spring.factories
,我想利用pd.DataFrame
并进行多次转换。
groupby
import pandas as pd
import numpy as np
np.random.seed(314)
dti = pd.date_range('2013-01-31', '2015-12-31', freq='M')
quarter = pd.Series(dti[::3], index=dti[::3], name='quarter')
quarter = quarter.reindex(dti).notnull().cumsum()
idx = pd.MultiIndex.from_tuples(zip(dti, quarter))
nda = np.random.randn(len(idx), 3) / 100 + 1.001
df = pd.DataFrame(nda, index=idx, columns=['A', 'B', 'C'])
看起来像这样
df
我正在运行此代码,感觉效率低下。有没有方法来组合这些转换?
print df.head(12)
A B C
2013-01-31 1 1.002661 1.008820 1.009523
2013-02-28 1 0.993929 0.991683 1.009867
2013-03-31 1 0.998782 1.004817 0.993274
2013-04-30 2 1.009630 0.998187 0.991681
2013-05-31 2 0.996015 1.008643 1.002915
2013-06-30 2 0.994812 1.017657 1.018382
2013-07-31 3 1.012822 1.012194 0.982339
2013-08-31 3 0.994636 0.993391 1.027641
2013-09-30 3 1.002682 1.002814 1.014214
2013-10-31 4 1.005378 1.002968 0.985704
2013-11-30 4 0.997625 0.991386 0.998687
2013-12-31 4 0.989528 0.996771 1.014305
答案 0 :(得分:0)
这刚刚发生在我身上
在apply
对象上使用groupby
方法。我想要应用的功能是:
seq_transform = lambda x: x.cumprod().shift().fillna(method='bfill')
然后运行
df.groupby(level=1).apply(seq_transform)