我要继续说......“不”,我认为没有直接的方法可以做到这一点,pandastic 方式(和 pythonic 也是)是明确的:
pd.DataFrame(df.sum(), columns=['sum'])
或者,更优雅地,使用字典(请注意,这会复制求和数组):
pd.DataFrame({'sum': df.sum()})
正如@root 所说,它使用起来更快:
pd.DataFrame(np.sum(df.values, axis=0), columns=['sum'])
(正如python的禅宗所说:“实用胜过纯洁”,所以如果你在乎这个时间,就用这个)。
然而,也许最流行的方式就是使用系列!:)
.
一些%timeit
小例子:
In [11]: %timeit pd.DataFrame(df.sum(), columns=['sum'])
1000 loops, best of 3: 356 us per loop
In [12]: %timeit pd.DataFrame({'sum': df.sum()})
1000 loops, best of 3: 462 us per loop
In [13]: %timeit pd.DataFrame(np.sum(df.values, axis=0), columns=['sum'])
1000 loops, best of 3: 205 us per loop
对于一个稍大的:
In [21]: df = pd.DataFrame(np.random.randn(100000, 3), columns=list('abc'))
In [22]: %timeit pd.DataFrame(df.sum(), columns=['sum'])
100 loops, best of 3: 7.99 ms per loop
In [23]: %timeit pd.DataFrame({'sum': df.sum()})
100 loops, best of 3: 8.3 ms per loop
In [24]: %timeit pd.DataFrame(np.sum(df.values, axis=0), columns=['sum'])
100 loops, best of 3: 2.47 ms per loop