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

问题描述 投票:0回答:1
data = {
    '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(data)

请帮忙解决 python pandas 问题

我想根据

sp
state
year
以半对角方式计算平均值。

示例 1:对于

sp=0
state=cm
year=2020
average(D2,E3,F4,G5,H6,I7,J8,K9,L10,M11,N12,O13,P14,Q15,R16,S17,T18,U19)

示例 2:对于

sp=1
state=cm
year=2020
average(E2,F3........T17,U18)

python pandas dataframe
1个回答
0
投票

为了计算对角线(无论是否是主对角线)的统计数据,您可以使用

np.diag(df,k)
,其中
k
是您的第 k 个对角线,如文档中所述。

在示例数据框中,您将使用:

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]}) print(np.diag(df,k=-1).mean()) # Computes the mean on the first diagonal below the main diagonal. # Result = 34.666666666666664
您需要根据您的具体情况调整此代码。

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