gpt4 book ai didi

python - 在 pandas 中,如何在对 DataFrame 求和时获得 DataFrame 作为输出

转载 作者:行者123 更新时间:2023-12-02 09:57:51 29 4
gpt4 key购买 nike

当我对 DataFrame 求和时,它返回一个 Series:

In [1]: import pandas as pd
In [2]: df = pd.DataFrame([[1, 2, 3], [2, 3, 3]], columns=['a', 'b', 'c'])

In [3]: df
Out[3]:
a b c
0 1 2 3
1 2 3 3

In [4]: s = df.sum()

In [5]: type(s)
Out[5]: pandas.core.series.Series

我知道我可以通过这个Series构造一个新的DataFrame。但是,还有更“ Pandas ”的方式吗?

最佳答案

我要继续说...“不”,我认为没有直接的方法可以做到这一点,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禅宗所说:“实用胜过纯粹”,所以如果你关心这个时间,就用这个)。

但是,也许 Pandas 方式就是使用系列!:)

.

一些 %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

关于python - 在 pandas 中,如何在对 DataFrame 求和时获得 DataFrame 作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16459217/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com