2013-05-07 144 views
6

是否有可能将Pandas.DataFrame中的所有列一起乘以获得DataFrame中每一行的单个值?将Pandas数据框中的所有列加在一起

举个例子,使用

df = pd.DataFrame(np.random.randn(5,3)*10) 

我想要一个新的DataFramedf2其中df2.ix[x,0]将有df.ix[x,0] * df.ix[x,1] * df.ix[x,2]值。

但是我不想硬编码这个,我怎么用循环来实现呢?

我发现了一个函数df.mul(series, axis=1),但不能找出一种方法来使用这个用于我的目的。

回答

13

你可以使用DataFrame.prod()

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 7 7 5 
1 1 8 6 
2 4 8 4 
3 2 9 5 
4 3 8 7 
>>> df.prod(axis=1) 
0 245 
1  48 
2 128 
3  90 
4 168 
dtype: int64 

你也可以applynp.prod,这是我会做本来,但通常可当直接的方法更快。

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 9 3 3 
1 8 5 4 
2 3 6 7 
3 9 8 5 
4 7 1 2 
>>> df.apply(np.prod, axis=1) 
0  81 
1 160 
2 126 
3 360 
4  14 
dtype: int64 
相关问题