多数据帧的均值和标准差

2024-05-16 23:46:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个数据帧,它们具有相同的列和相同的观察次数: 比如说

d1 = {'ID': ['A','B','C','D'], 'Amount': 
    [1,2,3,4]}
df1 =pd.DataFrame(data=d1)

d2 = {'ID': ['A','B','C','D'], 'Amount': 
    [6,0,1,5]}
df2 =pd.DataFrame(data=d2)

d3 = {'ID': ['A','B','C','D'], 'Amount': 
    [8,1,2,3]}
df3 =pd.DataFrame(data=d3)

我需要在每个数据帧中删除一列(D)及其对应的值,然后,对于每个变量,计算平均值和标准偏差。 预期输出应为

  avg   std
A   5    ...
B  ...   ...
C  ...   ...

通常,对于一个数据帧,我会使用drop列,然后使用mean()和标准偏差std()计算平均值。
如何使用多个数据帧轻松快速地完成此操作?(我至少有10个)


Tags: 数据iddataframedata次数amount平均值d2
2条回答

您也可以使用pivot_表:

import numpy as np

pd.concat([df1, df2, df3]).pivot_table(index='ID', aggfunc=[np.mean, np.std]).drop('D')

^{}^{}中的D一起使用,并通过^{}对命名聚合进行聚合:

df = (pd.concat([df1, df2, df3])
        .query('ID != "D"')
        .groupby('ID')
        .agg(avg=('Amount', 'mean'), std=('Amount', 'std')))
print (df)
    avg       std
ID               
A     5  3.605551
B     1  1.000000
C     2  1.000000

或者通过^{}删除最后一步中的D

df = (pd.concat([df1, df2, df3])
        .groupby('ID')
        .agg(avg=('Amount', 'mean'), std=('Amount', 'std'))
        .drop('D'))

相关问题 更多 >