Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中跨列应用多个函数(Mean、STD等)_Python_Pandas - Fatal编程技术网

在Python中跨列应用多个函数(Mean、STD等)

在Python中跨列应用多个函数(Mean、STD等),python,pandas,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

我有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列的平均值和标准值,跨列而不是跨行。e、 g平均值和标准差2和7分别为平均值和3.535533906标准差,如下所示

我希望我的结果是这样的

      Mean  STD
    0 4.7   3.535533906
    1 8     0
    2 .     .
    3 .     .
    . .     .
    . .     .
然而,当我试着去做

df=df.loc[df.time>=2&df.time另一种方式:

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
另一种方式:

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
你可以用形容词

你可以用形容词


借用了你的T:-@Wen,它不是我的-它属于熊猫和Numpy!:-DAlso你可以加上这个df['mean',df['std']=df['A','C'].意思是1,df['A','C']。std1@Dark,为什么你不想把它作为一个答案呢?:@M.irfan你不能就这样做吗,即df.loc[df.time.between2,7,['A','C']]你的T:-@Wen,它不是我的-它是熊猫和小矮人的!-所以你可以加上这个df['mean',df['std']=df['A','C'].意思是1,df['A','C']。std1@Dark,为什么你不想把它作为一个答案呢?:@M.irfan你不能就这样做吗,即df.loc[df.time.between2,7,['A','C']].T.Aggreat.但是我在寻找一系列行,比如从时间=2开始到时间=7。@M.irfan你已经自己做了我想df.loc[df.time>=2&df.timeYes.非常感谢。很好。但是我在寻找一系列行,比如从时间=2开始到时间=7。@M.irfan你已经自己做了我想df.loc[df.time>=2&df.time是的,非常感谢。
df[['A','C']].T.describe().T[['mean','std']]
Out[865]: 
   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