Pandas:汇总数据框中的所有元素?

Mar*_*son 5 python pandas

给定一个 Pandas 数据框df,我们可以像这样对列求和

[x for x in df.sum()]
Run Code Online (Sandbox Code Playgroud)

并产生这样的总和。

sum([x for x in df.sum()])
Run Code Online (Sandbox Code Playgroud)

这可以仅使用数据帧操作来完成,而无需求助于 Python 的 sum() 吗?

WeN*_*Ben 9

我们可以做的 stack

df.stack().sum()
Run Code Online (Sandbox Code Playgroud)


Sco*_*ton 5

使用np.sum

np.sum(df.to_numpy())
Run Code Online (Sandbox Code Playgroud)

或者正如@jakub 指出的那样:

df.to_numpy().sum()
Run Code Online (Sandbox Code Playgroud)

时间:

使用...

df = pd.DataFrame(np.arange(10000).reshape(100,-1))

%timeit df.to_numpy().sum()
# 12.1 µs ± 357 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit np.sum(df.to_numpy())
# 14 µs ± 263 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit df.stack().sum()
# 469 µs ± 30.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit df.sum().sum()
# 381 µs ± 21.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)

  • 等价于 `df.to_numpy().sum()` (2认同)