我的 df 在 pandas 中的对角平均计算

问题描述 投票:0回答:1

数据={ ‘SP’: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],

'State': ['cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm', 'cm'],

'Year': [2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020],

1: [0.01, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],

2: [0.023, 0.32, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],

3: [0.015, 0.5, 0.6, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],

4: [0.021, 0.68, 1.339, 1.998, None, None, None, None, None, None, None, None, None, None, None, None, None, None],

5: [0.0235, 0.86, 1.6965, 2.533, 3.3695, None, None, None, None, None, None, None, None, None, None, None, None, None],

6: [0.026, 1.04, 2.054, 3.068, 4.082, 5.096, None, None, None, None, None, None, None, None, None, None, None, None],

7: [0.0285, 1.22, 2.4115, 3.603, 4.7945, 5.986, 7.1775, None, None, None, None, None, None, None, None, None, None, None],

8: [0.031, 1.4, 2.769, 4.138, 5.507, 6.876, 8.245, 9.614, None, None, None, None, None, None, None, None, None, None],

9: [0.0335, 1.58, 3.1265, 4.673, 6.2195, 7.766, 9.3125, 10.859, 12.4055, None, None, None, None, None, None, None, None, None],

10: [0.036, 1.76, 3.484, 5.208, 6.932, 8.656, 10.38, 12.104, 13.828, 15.552, None, None, None, None, None, None, None, None],

11: [0.0385, 1.94, 3.8415, 5.743, 7.6445, 9.546, 11.4475, 13.349, 15.2505, 17.152, 19.0535, None, None, None, None, None, None, None],

12: [0.041, 2.12, 4.199, 6.278, 8.357, 10.436, 12.515, 14.594, 16.673, 18.752, 20.831, 22.91, None, None, None, None, None, None],

13: [0.0435, 2.3, 4.5565, 6.813, 9.0695, 11.326, 13.5825, 15.839, 18.0955, 20.352, 22.6085, 24.865, 27.1215, None, None, None, None, None],

14: [0.046, 2.48, 4.914, 7.348, 9.782, 12.216, 14.65, 17.084, 19.518, 21.952, 24.386, 26.82, 29.254, 31.688, None, None, None, None],

15: [0.0485, 2.66, 5.2715, 7.883, 10.4945, 13.106, 15.7175, 18.329, 20.9405, 23.552, 26.1635, 28.775, 31.3865, 33.998, 36.6095, None, None, None],

16: [0.051, 2.84, 5.629, 8.418, 11.207, 13.996, 16.785, 19.574, 22.363, 25.152, 27.941, 30.73, 33.519, 36.308, 39.097, 41.886, None, None],

17: [0.0535, 3.02, 5.9865, 8.953, 11.9195, 14.886, 17.8525, 20.819, 23.7855, 26.752, 29.7185, 32.685, 35.6515, 38.618, 41.5845, 44.551, 47.5175, None],

18: [0.056, 3.2, 6.344, 9.488, 12.632, 15.776, 18.92, 22.064, 25.208, 28.352, 31.496, 34.64, 37.784, 40.928, 44.072, 47.216, 50.36, 53.504]

}

df = pd.DataFrame(数据)

请帮忙解决 python pandas 问题

我想根据 sp(州年份)以半对角方式计算平均值。 例子: 对于 sp-0、state-cm 和 -2020 年 平均(D2,E3,F4,G5,H6,I7,J8,K9,L10,M11,N12,O13,P14,Q15,R16,S17,T18,U19) 对于 sp-1、state-cm 和年份 - 2020 平均(E2,F3........T17,U18)

python pandas dataframe
1个回答
0
投票

为了计算对角线(无论是否是主对角线)上的统计数据,您可以在数据帧上使用 np.diag,如下例所示:

import pandas as pd
import numpy as np

df = pd.DataFrame(data={'a': [5, 45, 65, 54], 'b': [0, 9, 5, 9],'c': [0, 0, 65, 54], 'd': [0, 0, 0, 9]})
np.diag(df,-1).mean() # Computes the mean on the first diagonal below the main diagonal.
# Result = 34.666666666666664 

您需要根据您的具体情况调整此代码。

© www.soinside.com 2019 - 2024. All rights reserved.