我有以下熊猫数据框:

码:

df = pd.DataFrame({'A1': [0.1,0.5,3.0, 9.0], 'A2':[2.0,4.5,1.2,9.0],'Random
data':[300,4500,800,900],'Random data2':[3000,450,80,90]})


输出:

    A1  A2  Randomdata  Randomdata2
0   0.1 2.0    300            3000
1   0.5 4.5    4500           450
2   3.0 1.2    800            80
3   9.0 9.0    900            90


它仅显示A1和A2,但实际上是从A1到A30的数据。我想计算每行的平均偏差和标准偏差,但仅计算A1至A30列(不包括Randomdata和Randomdata2列),并添加2个具有平均值和标准偏差的新列,如下所示。

     A1 A2  Randomdata  Randomdata2  Average   Stddev
0   0.1 2.0    300            3000
1   0.5 4.5    4500           450
2   3.0 1.2    800            80
3   9.0 9.0    900            90

最佳答案

首选方法
使用pd.DataFrame.filter
您对regex pattern的选择可以根据您的意愿而明确。在这种情况下,我指定该列必须以'A'开头,并且之后必须具有1个或多个数字。

d = df.filter(regex='^A\d+')
df.assign(Average=d.mean(1), Stddev=d.std(1))

    A1   A2  Random data  Random data2  Average    Stddev
0  0.1  2.0          300          3000     1.05  1.343503
1  0.5  4.5         4500           450     2.50  2.828427
2  3.0  1.2          800            80     2.10  1.272792
3  9.0  9.0          900            90     9.00  0.000000




替代项1
这太努力了。

rnm = dict(mean='Average', std='Stddev')
df.join(df.T[df.columns.str.startswith('A')].agg(['mean', 'std']).T.rename(columns=rnm))

    A1   A2  Random data  Random data2  Average    Stddev
0  0.1  2.0          300          3000     1.05  1.343503
1  0.5  4.5         4500           450     2.50  2.828427
2  3.0  1.2          800            80     2.10  1.272792
3  9.0  9.0          900            90     9.00  0.000000

关于python - 在 Pandas 数据框中计算数据参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47147106/

10-12 16:32
查看更多