我有一只大熊猫DataFrame
,如下所示:
sample = pd.DataFrame([[2,3],[4,5],[6,7],[8,9]],
index=pd.date_range('2017-08-01','2017-08-04'),
columns=['A','B'])
A B
2017-08-01 2 3
2017-08-02 4 5
2017-08-03 6 7
2017-08-04 8 9
我想将这些值累加到列中。以列A
为例,第二行变为2*4
,第三行变为2*4*6
,最后一行变为2*4*6*8
。对于列B也是如此。因此,期望的结果是:
A B
2017-08-01 2 3
2017-08-02 8 15
2017-08-03 48 105
2017-08-04 384 945
必须有一些内置的方法来实现这一点,但由于链式分配问题,我甚至在使用for循环时遇到了问题。
答案 0 :(得分:5)
<?php
$email = (isset($_POST["email"]) ? $_POST["email"] : "");
$token = (isset($_POST["token"]) ? $_POST["token"] : "");
?>
您还可以对值使用np.cumprod
:
out = sample.cumprod()
print(out)
A B
2017-08-01 2 3
2017-08-02 8 15
2017-08-03 48 105
2017-08-04 384 945
最后,使用itertools.accumulate
(只是为了好玩):
sample[:] = np.cumprod(sample.values, axis=0)
print(sample)
A B
2017-08-01 2 3
2017-08-02 8 15
2017-08-03 48 105
2017-08-04 384 945
答案 1 :(得分:4)
value.isInstanceOf[Map[_, _]]
print (sample.cumprod())
A B
2017-08-01 2 3
2017-08-02 8 15
2017-08-03 48 105
2017-08-04 384 945
<强>计时强>:
print (np.cumprod(sample))
A B
2017-08-01 2 3
2017-08-02 8 15
2017-08-03 48 105
2017-08-04 384 945
答案 2 :(得分:0)
数据框有一个名为cumprod
的方法。您可以按如下方式使用它
sample.cumprod()