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

标签 python pandas

我有这个 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/

相关文章:

python - 列表中的列表

python - 在 numpy 数组中查找多个值的行索引

pandas - 你如何用标量划分 Pandas 列?

python - 解析文本文件python并转换为pandas dataframe

python - 在 value_counts pandas 分类数据中包含零

python - "with"如何比 try/catch 在 Python 中打开文件更好?

python - 导入到 postgres(python 脚本)时如何进行列划分?

python - For 循环在终端中打印而不是在 Excel 文件中打印

python - Pandas 使用 .where() 替换 .groupby() 对象

python - 在 python 中将聚合值拆分为不同的计数,返回新行