【问题标题】:Get the mean of numerical columns in a multi-index dataframe获取多索引数据框中数值列的平均值
【发布时间】:2019-12-06 00:32:25
【问题描述】:

我想计算多索引数据框中数值列的平均值,并将新结果的数据框附加为新行。



        subject  1                  subject  2                  subject  3…
Country Unite   2017    2018    Frq 2017 Score  2018 Score  2017    2018    Frq 2017 Score  2018 Score  
Argentina   K   12  22  100 50.77214238 51.54316539 12  22  100 50.77214238 51.54316539 
Australia   K   68  13  150 66.92805676 67.60645268 68  13  150 66.92805676 67.60645268 
Mean            40  17.5    125 58.85009957 59.57480904 40  17.5    125 58.85009957 59.57480904 

我试过用这条线,但我得到一个新的行,里面满是 nan

G20.loc['mean'] = G20.mean(axis=0, numeric_only=True)

Exmple of the dataframe

谢谢

【问题讨论】:

  • 预期结果是什么?
  • @MarkWang 延续每列平均值的新行。 ``` 表示 68 13 150 66. 67. 68 13 150 66. 67. ```
  • 这不是澳大利亚对应的行吗?我建议您在问题中清楚地提供输入和输出。
  • @MarkWang 感谢您的耐心等待,我意识到描述还不够。我添加了更多细节和图片。

标签: pandas mean multi-index


【解决方案1】:

试试这个:

np.random.seed(43)
df = pd.DataFrame(np.random.randint(0,10,(6,6)), columns = pd.MultiIndex.from_product([['Top A','Top B'],['W','X','Y']]))
df.loc['Mean',:] = df.mean()
print(df)

输出:

     Top A                    Top B                    
         W         X    Y         W         X         Y
0      6.0  3.000000  7.0  4.000000  6.000000  9.000000
1      2.0  6.000000  7.0  4.000000  3.000000  7.000000
2      7.0  2.000000  5.0  4.000000  1.000000  7.000000
3      5.0  1.000000  4.0  0.000000  9.000000  5.000000
4      8.0  0.000000  9.0  2.000000  6.000000  3.000000
5      8.0  2.000000  4.0  2.000000  6.000000  4.000000
Mean   6.0  2.333333  6.0  2.666667  5.166667  5.833333

【讨论】:

  • 我得到一个带有 nan 值的新行 (index=Mean)。并且 df.mean() 返回一个空系列。系列([],dtype:float64)。
  • 您的数据中有 NaN 吗?你能在这个问题中添加数据来重现这个结果吗?
猜你喜欢
  • 2022-01-25
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2017-10-12
  • 1970-01-01
  • 2022-06-29
  • 2020-08-09
相关资源
最近更新 更多