gpt4 book ai didi

python - 在 Python 中跨列应用多个函数(均值、STD 等)

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:34 24 4
gpt4 key购买 nike

我有这个 4 列和 8 行的数据...

df = pd.DataFrame([[1, 2, 3,7], [2, 8, 6,8],[3, 2, 3,7], [4, 4, 6,8],[5, 2, 3,7], [6, 1, 6,8],[7, 8, 3,7], [8, 9, 6,8]], columns=['time','A', 'B', 'C'])

time A B C
0 1 2 3 7
1 2 8 6 8
2 3 2 3 7
3 4 4 6 8
4 5 2 3 7
5 6 1 6 8
6 7 8 3 7
7 8 9 6 8

我想获取 A 列和 C 列的均值和 STD,跨列而不是跨行。例如 2 和 7 的 Mean 和 STD 分别为 ""(平均值)和 "3.535533906"(STD),如下所示。

我希望我的结果看起来像这样......

      Mean  STD
0 4.7 3.535533906
1 8 0
2 . .
3 . .
. . .
. . .

但是,当我尝试做的时候

df= df.loc[(df.time>=2) & (df.time<=7),['A','C']],(['mean','std'])

我收到以下错误...

AttributeError: 'DataFrame' 对象没有 'time' 属性

我也尝试通过这样做来找到解决方案,但徒劳无功:

df= df.loc[(df.time>=2) & (df.time<=7),['A','C']].agg(['mean','std'])

但它给了我所有行均值和 STD 的结果。

                 A         C
mean 4.166667 7.500000
std 3.125167 0.547723

我该如何解决?

最佳答案

另一种方式:

In [346]: df[['A','C']].T.agg(['mean','std']).T
Out[346]:
mean std
0 4.5 3.535534
1 8.0 0.000000
2 4.5 3.535534
3 6.0 2.828427
4 4.5 3.535534
5 4.5 4.949747
6 7.5 0.707107
7 8.5 0.707107

或作为原始 DF 中的新列:

In [347]: df[['Mean','STD']] = df[['A','C']].T.agg(['mean','std']).T

In [348]: df
Out[348]:
time A B C Mean STD
0 1 2 3 7 4.5 3.535534
1 2 8 6 8 8.0 0.000000
2 3 2 3 7 4.5 3.535534
3 4 4 6 8 6.0 2.828427
4 5 2 3 7 4.5 3.535534
5 6 1 6 8 4.5 4.949747
6 7 8 3 7 7.5 0.707107
7 8 9 6 8 8.5 0.707107

关于python - 在 Python 中跨列应用多个函数(均值、STD 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47677042/

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