繁体   English   中英

使用 Pandas DataFrame 的 if else 语句求平均值并创建新的结果 DataFrame

[英]Averaging values with if else statement of a Pandas DataFrame and creating a new resulting DataFrame

我有一个看起来像这样的df:

A       B     C
5.1     1.1   7.3
5.0     0.3   7.2
4.9     1.7   7.0
10.2    1.1   7.9
10.3    1.0   7.0
15.4    2.0   7.1
15.1    1.0   7.3
0.0     0.9   7.3
0.0     1.3   7.9
0.0     0.5   7.5
-5.1    1.0   7.3
-10.3   0.8   7.3
-10.1   1.0   7.1

我想检测“A”列的范围并获取所有列的平均值和标准差,并将结果保存在新的 df 中。

预期 Output:

mean_A  Std_A  mean_B  Std_B  mean_C  Std_C
5.0     ...    1.03    ...    7.17    ...
10.25   ...    1.05    ...    7.45    ...
...     ...    ...     ...    ...     ...

所以,我想从基于列“A”的数据组中获取平均值。

我是 Python 和 SO 的新手。 我希望我能够解释我的目标。

组由A中的值差异定义,例如5更大,传递给GroupBy.agg并使用std聚合mean

df = df.groupby(df.A.diff().abs().gt(5).cumsum()).agg(['mean','std'])
df.columns = df.columns.map(lambda x: f'{x[1]}_{x[0]}')

print (df)
   mean_A     std_A    mean_B     std_B    mean_C     std_C
A                                                          
0    5.00  0.100000  1.033333  0.702377  7.166667  0.152753
1   10.25  0.070711  1.050000  0.070711  7.450000  0.636396
2   15.25  0.212132  1.500000  0.707107  7.200000  0.141421
3    0.00  0.000000  0.900000  0.400000  7.566667  0.305505
4   -5.10       NaN  1.000000       NaN  7.300000       NaN
5  -10.20  0.141421  0.900000  0.141421  7.200000  0.141421

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM