我有以下熊猫数据框:
码:
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/